passagemath-objects 10.6.46__cp314-cp314t-macosx_13_0_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of passagemath-objects might be problematic. Click here for more details.

Files changed (280) hide show
  1. passagemath_objects/.dylibs/libgmp.10.dylib +0 -0
  2. passagemath_objects/__init__.py +3 -0
  3. passagemath_objects-10.6.46.dist-info/METADATA +115 -0
  4. passagemath_objects-10.6.46.dist-info/RECORD +280 -0
  5. passagemath_objects-10.6.46.dist-info/WHEEL +6 -0
  6. passagemath_objects-10.6.46.dist-info/top_level.txt +3 -0
  7. sage/all__sagemath_objects.py +37 -0
  8. sage/arith/all__sagemath_objects.py +5 -0
  9. sage/arith/long.pxd +411 -0
  10. sage/arith/numerical_approx.cpython-314t-darwin.so +0 -0
  11. sage/arith/numerical_approx.pxd +35 -0
  12. sage/arith/numerical_approx.pyx +75 -0
  13. sage/arith/power.cpython-314t-darwin.so +0 -0
  14. sage/arith/power.pxd +31 -0
  15. sage/arith/power.pyx +127 -0
  16. sage/categories/action.cpython-314t-darwin.so +0 -0
  17. sage/categories/action.pxd +29 -0
  18. sage/categories/action.pyx +641 -0
  19. sage/categories/algebra_functor.py +745 -0
  20. sage/categories/all__sagemath_objects.py +33 -0
  21. sage/categories/basic.py +62 -0
  22. sage/categories/cartesian_product.py +295 -0
  23. sage/categories/category.py +3401 -0
  24. sage/categories/category_cy_helper.cpython-314t-darwin.so +0 -0
  25. sage/categories/category_cy_helper.pxd +8 -0
  26. sage/categories/category_cy_helper.pyx +322 -0
  27. sage/categories/category_singleton.cpython-314t-darwin.so +0 -0
  28. sage/categories/category_singleton.pxd +3 -0
  29. sage/categories/category_singleton.pyx +342 -0
  30. sage/categories/category_types.py +637 -0
  31. sage/categories/category_with_axiom.py +2876 -0
  32. sage/categories/covariant_functorial_construction.py +703 -0
  33. sage/categories/facade_sets.py +228 -0
  34. sage/categories/functor.cpython-314t-darwin.so +0 -0
  35. sage/categories/functor.pxd +7 -0
  36. sage/categories/functor.pyx +691 -0
  37. sage/categories/homset.py +1338 -0
  38. sage/categories/homsets.py +364 -0
  39. sage/categories/isomorphic_objects.py +73 -0
  40. sage/categories/map.cpython-314t-darwin.so +0 -0
  41. sage/categories/map.pxd +34 -0
  42. sage/categories/map.pyx +2106 -0
  43. sage/categories/morphism.cpython-314t-darwin.so +0 -0
  44. sage/categories/morphism.pxd +14 -0
  45. sage/categories/morphism.pyx +895 -0
  46. sage/categories/objects.py +167 -0
  47. sage/categories/primer.py +1696 -0
  48. sage/categories/pushout.py +4834 -0
  49. sage/categories/quotients.py +64 -0
  50. sage/categories/realizations.py +200 -0
  51. sage/categories/sets_cat.py +3290 -0
  52. sage/categories/sets_with_partial_maps.py +52 -0
  53. sage/categories/subobjects.py +64 -0
  54. sage/categories/subquotients.py +21 -0
  55. sage/categories/with_realizations.py +311 -0
  56. sage/cpython/__init__.py +19 -0
  57. sage/cpython/_py2_random.py +619 -0
  58. sage/cpython/all.py +3 -0
  59. sage/cpython/atexit.cpython-314t-darwin.so +0 -0
  60. sage/cpython/atexit.pyx +269 -0
  61. sage/cpython/builtin_types.cpython-314t-darwin.so +0 -0
  62. sage/cpython/builtin_types.pyx +7 -0
  63. sage/cpython/cython_metaclass.cpython-314t-darwin.so +0 -0
  64. sage/cpython/cython_metaclass.h +117 -0
  65. sage/cpython/cython_metaclass.pxd +3 -0
  66. sage/cpython/cython_metaclass.pyx +130 -0
  67. sage/cpython/debug.cpython-314t-darwin.so +0 -0
  68. sage/cpython/debug.pyx +302 -0
  69. sage/cpython/dict_del_by_value.cpython-314t-darwin.so +0 -0
  70. sage/cpython/dict_del_by_value.pxd +9 -0
  71. sage/cpython/dict_del_by_value.pyx +191 -0
  72. sage/cpython/dict_internal.h +245 -0
  73. sage/cpython/getattr.cpython-314t-darwin.so +0 -0
  74. sage/cpython/getattr.pxd +9 -0
  75. sage/cpython/getattr.pyx +439 -0
  76. sage/cpython/pycore_long.h +97 -0
  77. sage/cpython/pycore_long.pxd +10 -0
  78. sage/cpython/python_debug.h +44 -0
  79. sage/cpython/python_debug.pxd +47 -0
  80. sage/cpython/pyx_visit.h +13 -0
  81. sage/cpython/string.cpython-314t-darwin.so +0 -0
  82. sage/cpython/string.pxd +76 -0
  83. sage/cpython/string.pyx +34 -0
  84. sage/cpython/string_impl.h +60 -0
  85. sage/cpython/type.cpython-314t-darwin.so +0 -0
  86. sage/cpython/type.pxd +2 -0
  87. sage/cpython/type.pyx +40 -0
  88. sage/cpython/wrapperdescr.pxd +67 -0
  89. sage/ext/all__sagemath_objects.py +3 -0
  90. sage/ext/ccobject.h +64 -0
  91. sage/ext/cplusplus.pxd +17 -0
  92. sage/ext/mod_int.h +30 -0
  93. sage/ext/mod_int.pxd +24 -0
  94. sage/ext/stdsage.pxd +39 -0
  95. sage/groups/all__sagemath_objects.py +1 -0
  96. sage/groups/group.cpython-314t-darwin.so +0 -0
  97. sage/groups/group.pxd +14 -0
  98. sage/groups/group.pyx +322 -0
  99. sage/groups/old.cpython-314t-darwin.so +0 -0
  100. sage/groups/old.pxd +14 -0
  101. sage/groups/old.pyx +219 -0
  102. sage/libs/all__sagemath_objects.py +3 -0
  103. sage/libs/gmp/__init__.py +1 -0
  104. sage/libs/gmp/all.pxd +6 -0
  105. sage/libs/gmp/binop.pxd +23 -0
  106. sage/libs/gmp/misc.pxd +8 -0
  107. sage/libs/gmp/mpf.pxd +88 -0
  108. sage/libs/gmp/mpn.pxd +57 -0
  109. sage/libs/gmp/mpq.pxd +57 -0
  110. sage/libs/gmp/mpz.pxd +202 -0
  111. sage/libs/gmp/pylong.cpython-314t-darwin.so +0 -0
  112. sage/libs/gmp/pylong.pxd +12 -0
  113. sage/libs/gmp/pylong.pyx +150 -0
  114. sage/libs/gmp/random.pxd +25 -0
  115. sage/libs/gmp/randomize.pxd +59 -0
  116. sage/libs/gmp/types.pxd +53 -0
  117. sage/libs/gmpxx.pxd +19 -0
  118. sage/misc/abstract_method.py +276 -0
  119. sage/misc/all__sagemath_objects.py +43 -0
  120. sage/misc/bindable_class.py +253 -0
  121. sage/misc/c3_controlled.cpython-314t-darwin.so +0 -0
  122. sage/misc/c3_controlled.pxd +2 -0
  123. sage/misc/c3_controlled.pyx +1402 -0
  124. sage/misc/cachefunc.cpython-314t-darwin.so +0 -0
  125. sage/misc/cachefunc.pxd +43 -0
  126. sage/misc/cachefunc.pyx +3781 -0
  127. sage/misc/call.py +188 -0
  128. sage/misc/classcall_metaclass.cpython-314t-darwin.so +0 -0
  129. sage/misc/classcall_metaclass.pxd +14 -0
  130. sage/misc/classcall_metaclass.pyx +599 -0
  131. sage/misc/constant_function.cpython-314t-darwin.so +0 -0
  132. sage/misc/constant_function.pyx +130 -0
  133. sage/misc/decorators.py +747 -0
  134. sage/misc/fast_methods.cpython-314t-darwin.so +0 -0
  135. sage/misc/fast_methods.pxd +20 -0
  136. sage/misc/fast_methods.pyx +351 -0
  137. sage/misc/flatten.py +90 -0
  138. sage/misc/fpickle.cpython-314t-darwin.so +0 -0
  139. sage/misc/fpickle.pyx +177 -0
  140. sage/misc/function_mangling.cpython-314t-darwin.so +0 -0
  141. sage/misc/function_mangling.pxd +11 -0
  142. sage/misc/function_mangling.pyx +308 -0
  143. sage/misc/inherit_comparison.cpython-314t-darwin.so +0 -0
  144. sage/misc/inherit_comparison.pxd +5 -0
  145. sage/misc/inherit_comparison.pyx +105 -0
  146. sage/misc/instancedoc.cpython-314t-darwin.so +0 -0
  147. sage/misc/instancedoc.pyx +331 -0
  148. sage/misc/lazy_attribute.cpython-314t-darwin.so +0 -0
  149. sage/misc/lazy_attribute.pyx +607 -0
  150. sage/misc/lazy_format.py +135 -0
  151. sage/misc/lazy_import.cpython-314t-darwin.so +0 -0
  152. sage/misc/lazy_import.pyx +1299 -0
  153. sage/misc/lazy_import_cache.py +36 -0
  154. sage/misc/lazy_list.cpython-314t-darwin.so +0 -0
  155. sage/misc/lazy_list.pxd +19 -0
  156. sage/misc/lazy_list.pyx +1187 -0
  157. sage/misc/lazy_string.cpython-314t-darwin.so +0 -0
  158. sage/misc/lazy_string.pxd +7 -0
  159. sage/misc/lazy_string.pyx +546 -0
  160. sage/misc/misc.py +1066 -0
  161. sage/misc/misc_c.cpython-314t-darwin.so +0 -0
  162. sage/misc/misc_c.pxd +3 -0
  163. sage/misc/misc_c.pyx +766 -0
  164. sage/misc/namespace_package.py +37 -0
  165. sage/misc/nested_class.cpython-314t-darwin.so +0 -0
  166. sage/misc/nested_class.pxd +3 -0
  167. sage/misc/nested_class.pyx +394 -0
  168. sage/misc/persist.cpython-314t-darwin.so +0 -0
  169. sage/misc/persist.pyx +1251 -0
  170. sage/misc/prandom.py +418 -0
  171. sage/misc/randstate.cpython-314t-darwin.so +0 -0
  172. sage/misc/randstate.pxd +30 -0
  173. sage/misc/randstate.pyx +1059 -0
  174. sage/misc/repr.py +203 -0
  175. sage/misc/reset.cpython-314t-darwin.so +0 -0
  176. sage/misc/reset.pyx +196 -0
  177. sage/misc/sage_ostools.cpython-314t-darwin.so +0 -0
  178. sage/misc/sage_ostools.pyx +323 -0
  179. sage/misc/sage_timeit.py +275 -0
  180. sage/misc/sage_timeit_class.cpython-314t-darwin.so +0 -0
  181. sage/misc/sage_timeit_class.pyx +120 -0
  182. sage/misc/sage_unittest.py +637 -0
  183. sage/misc/sageinspect.py +2768 -0
  184. sage/misc/session.cpython-314t-darwin.so +0 -0
  185. sage/misc/session.pyx +392 -0
  186. sage/misc/superseded.py +557 -0
  187. sage/misc/test_nested_class.py +228 -0
  188. sage/misc/timing.py +264 -0
  189. sage/misc/unknown.py +222 -0
  190. sage/misc/verbose.py +253 -0
  191. sage/misc/weak_dict.cpython-314t-darwin.so +0 -0
  192. sage/misc/weak_dict.pxd +15 -0
  193. sage/misc/weak_dict.pyx +1231 -0
  194. sage/modules/all__sagemath_objects.py +1 -0
  195. sage/modules/module.cpython-314t-darwin.so +0 -0
  196. sage/modules/module.pxd +5 -0
  197. sage/modules/module.pyx +329 -0
  198. sage/rings/all__sagemath_objects.py +3 -0
  199. sage/rings/integer_fake.h +22 -0
  200. sage/rings/integer_fake.pxd +55 -0
  201. sage/sets/all__sagemath_objects.py +3 -0
  202. sage/sets/pythonclass.cpython-314t-darwin.so +0 -0
  203. sage/sets/pythonclass.pxd +9 -0
  204. sage/sets/pythonclass.pyx +247 -0
  205. sage/structure/__init__.py +4 -0
  206. sage/structure/all.py +30 -0
  207. sage/structure/category_object.cpython-314t-darwin.so +0 -0
  208. sage/structure/category_object.pxd +28 -0
  209. sage/structure/category_object.pyx +1087 -0
  210. sage/structure/coerce.cpython-314t-darwin.so +0 -0
  211. sage/structure/coerce.pxd +44 -0
  212. sage/structure/coerce.pyx +2107 -0
  213. sage/structure/coerce_actions.cpython-314t-darwin.so +0 -0
  214. sage/structure/coerce_actions.pxd +27 -0
  215. sage/structure/coerce_actions.pyx +988 -0
  216. sage/structure/coerce_dict.cpython-314t-darwin.so +0 -0
  217. sage/structure/coerce_dict.pxd +51 -0
  218. sage/structure/coerce_dict.pyx +1557 -0
  219. sage/structure/coerce_exceptions.py +23 -0
  220. sage/structure/coerce_maps.cpython-314t-darwin.so +0 -0
  221. sage/structure/coerce_maps.pxd +28 -0
  222. sage/structure/coerce_maps.pyx +718 -0
  223. sage/structure/debug_options.cpython-314t-darwin.so +0 -0
  224. sage/structure/debug_options.pxd +6 -0
  225. sage/structure/debug_options.pyx +54 -0
  226. sage/structure/dynamic_class.py +541 -0
  227. sage/structure/element.cpython-314t-darwin.so +0 -0
  228. sage/structure/element.pxd +272 -0
  229. sage/structure/element.pyx +4772 -0
  230. sage/structure/element_wrapper.cpython-314t-darwin.so +0 -0
  231. sage/structure/element_wrapper.pxd +12 -0
  232. sage/structure/element_wrapper.pyx +582 -0
  233. sage/structure/factorization.py +1422 -0
  234. sage/structure/factorization_integer.py +105 -0
  235. sage/structure/factory.cpython-314t-darwin.so +0 -0
  236. sage/structure/factory.pyx +786 -0
  237. sage/structure/formal_sum.py +489 -0
  238. sage/structure/gens_py.py +73 -0
  239. sage/structure/global_options.py +1743 -0
  240. sage/structure/indexed_generators.py +863 -0
  241. sage/structure/list_clone.cpython-314t-darwin.so +0 -0
  242. sage/structure/list_clone.pxd +65 -0
  243. sage/structure/list_clone.pyx +1867 -0
  244. sage/structure/list_clone_demo.cpython-314t-darwin.so +0 -0
  245. sage/structure/list_clone_demo.pyx +248 -0
  246. sage/structure/list_clone_timings.py +179 -0
  247. sage/structure/list_clone_timings_cy.cpython-314t-darwin.so +0 -0
  248. sage/structure/list_clone_timings_cy.pyx +86 -0
  249. sage/structure/mutability.cpython-314t-darwin.so +0 -0
  250. sage/structure/mutability.pxd +21 -0
  251. sage/structure/mutability.pyx +348 -0
  252. sage/structure/nonexact.py +69 -0
  253. sage/structure/parent.cpython-314t-darwin.so +0 -0
  254. sage/structure/parent.pxd +112 -0
  255. sage/structure/parent.pyx +3093 -0
  256. sage/structure/parent_base.cpython-314t-darwin.so +0 -0
  257. sage/structure/parent_base.pxd +13 -0
  258. sage/structure/parent_base.pyx +44 -0
  259. sage/structure/parent_gens.cpython-314t-darwin.so +0 -0
  260. sage/structure/parent_gens.pxd +22 -0
  261. sage/structure/parent_gens.pyx +377 -0
  262. sage/structure/parent_old.cpython-314t-darwin.so +0 -0
  263. sage/structure/parent_old.pxd +25 -0
  264. sage/structure/parent_old.pyx +294 -0
  265. sage/structure/proof/__init__.py +1 -0
  266. sage/structure/proof/all.py +243 -0
  267. sage/structure/proof/proof.py +300 -0
  268. sage/structure/richcmp.cpython-314t-darwin.so +0 -0
  269. sage/structure/richcmp.pxd +213 -0
  270. sage/structure/richcmp.pyx +495 -0
  271. sage/structure/sage_object.cpython-314t-darwin.so +0 -0
  272. sage/structure/sage_object.pxd +3 -0
  273. sage/structure/sage_object.pyx +988 -0
  274. sage/structure/sage_object_test.py +19 -0
  275. sage/structure/sequence.py +937 -0
  276. sage/structure/set_factories.py +1178 -0
  277. sage/structure/set_factories_example.py +527 -0
  278. sage/structure/support_view.py +179 -0
  279. sage/structure/test_factory.py +56 -0
  280. sage/structure/unique_representation.py +1359 -0
@@ -0,0 +1,364 @@
1
+ # sage_setup: distribution = sagemath-objects
2
+ r"""
3
+ Homset categories
4
+ """
5
+ # ****************************************************************************
6
+ # Copyright (C) 2014 Nicolas M. Thiery <nthiery at users.sf.net>
7
+ #
8
+ # Distributed under the terms of the GNU General Public License (GPL)
9
+ # https://www.gnu.org/licenses/
10
+ # *****************************************************************************
11
+
12
+ from sage.misc.cachefunc import cached_method
13
+ from sage.categories.category import Category, JoinCategory, CategoryWithParameters
14
+ from sage.categories.category_singleton import Category_singleton
15
+ from sage.categories.category_with_axiom import CategoryWithAxiom
16
+ from sage.categories.covariant_functorial_construction import FunctorialConstructionCategory
17
+
18
+
19
+ class HomsetsCategory(FunctorialConstructionCategory, CategoryWithParameters):
20
+
21
+ _functor_category = "Homsets"
22
+
23
+ @classmethod
24
+ def default_super_categories(cls, category):
25
+ """
26
+ Return the default super categories of ``category.Homsets()``.
27
+
28
+ INPUT:
29
+
30
+ - ``cls`` -- the category class for the functor `F`
31
+ - ``category`` -- a category `Cat`
32
+
33
+ OUTPUT: a category
34
+
35
+ As for the other functorial constructions, if ``category``
36
+ implements a nested ``Homsets`` class, this method is used in
37
+ combination with ``category.Homsets().extra_super_categories()``
38
+ to compute the super categories of ``category.Homsets()``.
39
+
40
+ EXAMPLES:
41
+
42
+ If ``category`` has one or more full super categories, then
43
+ the join of their respective homsets category is returned. In
44
+ this example, this join consists of a single category::
45
+
46
+ sage: from sage.categories.homsets import HomsetsCategory
47
+ sage: from sage.categories.additive_groups import AdditiveGroups
48
+
49
+ sage: C = AdditiveGroups()
50
+ sage: C.full_super_categories()
51
+ [Category of additive inverse additive unital additive magmas,
52
+ Category of additive monoids]
53
+ sage: H = HomsetsCategory.default_super_categories(C); H
54
+ Category of homsets of additive monoids
55
+ sage: type(H)
56
+ <class 'sage.categories.additive_monoids.AdditiveMonoids.Homsets_with_category'>
57
+
58
+ and, given that nothing specific is currently implemented for
59
+ homsets of additive groups, ``H`` is directly the category
60
+ thereof::
61
+
62
+ sage: C.Homsets()
63
+ Category of homsets of additive monoids
64
+
65
+ Similarly for rings: a ring homset is just a homset of unital
66
+ magmas and additive magmas::
67
+
68
+ sage: Rings().Homsets()
69
+ Category of homsets of unital magmas and additive unital additive magmas
70
+
71
+ Otherwise, if ``category`` implements a nested class
72
+ ``Homsets``, this method returns the category of all homsets::
73
+
74
+ sage: AdditiveMagmas.Homsets
75
+ <class 'sage.categories.additive_magmas.AdditiveMagmas.Homsets'>
76
+ sage: HomsetsCategory.default_super_categories(AdditiveMagmas())
77
+ Category of homsets
78
+
79
+ which gives one of the super categories of
80
+ ``category.Homsets()``::
81
+
82
+ sage: AdditiveMagmas().Homsets().super_categories()
83
+ [Category of additive magmas, Category of homsets]
84
+ sage: AdditiveMagmas().AdditiveUnital().Homsets().super_categories()
85
+ [Category of additive unital additive magmas, Category of homsets]
86
+
87
+ the other coming from ``category.Homsets().extra_super_categories()``::
88
+
89
+ sage: AdditiveMagmas().Homsets().extra_super_categories()
90
+ [Category of additive magmas]
91
+
92
+ Finally, as a last resort, this method returns a stub category
93
+ modelling the homsets of this category::
94
+
95
+ sage: hasattr(Posets, "Homsets")
96
+ False
97
+ sage: H = HomsetsCategory.default_super_categories(Posets()); H
98
+ Category of homsets of posets
99
+ sage: type(H)
100
+ <class 'sage.categories.homsets.HomsetsOf_with_category'>
101
+ sage: Posets().Homsets()
102
+ Category of homsets of posets
103
+
104
+ TESTS::
105
+
106
+ sage: Objects().Homsets().super_categories()
107
+ [Category of homsets]
108
+ sage: Sets().Homsets().super_categories()
109
+ [Category of homsets]
110
+ sage: (Magmas() & Posets()).Homsets().super_categories()
111
+ [Category of homsets]
112
+ """
113
+ if category.full_super_categories():
114
+ return Category.join([getattr(cat, cls._functor_category)()
115
+ for cat in category.full_super_categories()])
116
+ else:
117
+ functor_category = getattr(category.__class__, cls._functor_category)
118
+ if isinstance(functor_category, type) and issubclass(functor_category, Category):
119
+ return Homsets()
120
+ else:
121
+ return HomsetsOf(Category.join(category.structure()))
122
+
123
+ def _test_homsets_category(self, **options):
124
+ r"""
125
+ Run generic tests on this homsets category.
126
+
127
+ .. SEEALSO:: :class:`TestSuite`.
128
+
129
+ EXAMPLES::
130
+
131
+ sage: Sets().Homsets()._test_homsets_category()
132
+ """
133
+ # TODO: remove if unneeded
134
+ #from sage.categories.objects import Objects
135
+ #from sage.categories.sets_cat import Sets
136
+ tester = self._tester(**options)
137
+ tester.assertTrue(self.is_subcategory(Category.join(self.base_category().structure()).Homsets()))
138
+ tester.assertTrue(self.is_subcategory(Homsets()))
139
+
140
+ @cached_method
141
+ def base(self):
142
+ """
143
+ If this homsets category is subcategory of a category with a base, return that base.
144
+
145
+ .. TODO:: Is this really useful?
146
+
147
+ EXAMPLES::
148
+
149
+ sage: ModulesWithBasis(ZZ).Homsets().base()
150
+ Integer Ring
151
+ """
152
+ from sage.categories.category_types import Category_over_base
153
+ for C in self._all_super_categories_proper:
154
+ if isinstance(C,Category_over_base):
155
+ return C.base()
156
+ raise AttributeError("This hom category has no base")
157
+
158
+ def _make_named_class_key(self, name):
159
+ r"""
160
+ Return what the element/parent/... classes depend on.
161
+
162
+ .. SEEALSO::
163
+
164
+ - :meth:`CategoryWithParameters`
165
+ - :meth:`CategoryWithParameters._make_named_class_key`
166
+
167
+ TESTS::
168
+
169
+ sage: ModulesWithBasis(ZZ).Homsets()._make_named_class_key('parent_class')
170
+ <class 'sage.categories.modules_with_basis.ModulesWithBasis.parent_class'>
171
+ """
172
+ return getattr(self.base_category(), name)
173
+
174
+
175
+ class HomsetsOf(HomsetsCategory):
176
+ """
177
+ Default class for homsets of a category.
178
+
179
+ This is used when a category `C` defines some additional structure
180
+ but not a homset category of its own. Indeed, unlike for covariant
181
+ functorial constructions, we cannot represent the homset category
182
+ of `C` by just the join of the homset categories of its super
183
+ categories.
184
+
185
+ EXAMPLES::
186
+
187
+ sage: C = (Magmas() & Posets()).Homsets(); C
188
+ Category of homsets of magmas and posets
189
+ sage: type(C)
190
+ <class 'sage.categories.homsets.HomsetsOf_with_category'>
191
+
192
+ TESTS::
193
+
194
+ sage: TestSuite(C).run()
195
+ sage: C = Rings().Homsets()
196
+ sage: TestSuite(C).run(skip=['_test_category_graph'])
197
+ sage: TestSuite(C).run()
198
+ """
199
+ _base_category_class = (Category,)
200
+
201
+ def _repr_object_names(self):
202
+ """
203
+ EXAMPLES::
204
+
205
+ sage: Semigroups().Homsets()
206
+ Category of homsets of magmas
207
+ sage: (Magmas() & AdditiveMagmas() & Posets()).Homsets()
208
+ Category of homsets of magmas and additive magmas and posets
209
+ sage: Rings().Homsets()
210
+ Category of homsets of unital magmas and additive unital additive magmas
211
+ """
212
+ base_category = self.base_category()
213
+ try:
214
+ object_names = base_category._repr_object_names()
215
+ except ValueError:
216
+ assert isinstance(base_category, JoinCategory)
217
+ object_names = ' and '.join(cat._repr_object_names() for cat in base_category.super_categories())
218
+ return "homsets of %s" % (object_names)
219
+
220
+ def super_categories(self):
221
+ r"""
222
+ Return the super categories of ``self``.
223
+
224
+ A stub homset category admits a single super category, namely
225
+ the category of all homsets.
226
+
227
+ EXAMPLES::
228
+
229
+ sage: C = (Magmas() & Posets()).Homsets(); C
230
+ Category of homsets of magmas and posets
231
+ sage: type(C)
232
+ <class 'sage.categories.homsets.HomsetsOf_with_category'>
233
+ sage: C.super_categories()
234
+ [Category of homsets]
235
+ """
236
+ return [Homsets()]
237
+
238
+
239
+ class Homsets(Category_singleton):
240
+ """
241
+ The category of all homsets.
242
+
243
+ EXAMPLES::
244
+
245
+ sage: from sage.categories.homsets import Homsets
246
+ sage: Homsets()
247
+ Category of homsets
248
+
249
+ This is a subcategory of ``Sets()``::
250
+
251
+ sage: Homsets().super_categories()
252
+ [Category of sets]
253
+
254
+ By this, we assume that all homsets implemented in Sage are sets,
255
+ or equivalently that we only implement locally small categories.
256
+ See :wikipedia:`Category_(mathematics)`.
257
+
258
+ :issue:`17364`: every homset category shall be a subcategory of the
259
+ category of all homsets::
260
+
261
+ sage: Schemes().Homsets().is_subcategory(Homsets())
262
+ True
263
+ sage: AdditiveMagmas().Homsets().is_subcategory(Homsets())
264
+ True
265
+ sage: AdditiveMagmas().AdditiveUnital().Homsets().is_subcategory(Homsets())
266
+ True
267
+
268
+ This is tested in :meth:`HomsetsCategory._test_homsets_category`.
269
+ """
270
+ def super_categories(self):
271
+ """
272
+ Return the super categories of ``self``.
273
+
274
+ EXAMPLES::
275
+
276
+ sage: from sage.categories.homsets import Homsets
277
+ sage: Homsets()
278
+ Category of homsets
279
+ """
280
+ from .sets_cat import Sets
281
+ return [Sets()]
282
+
283
+ class SubcategoryMethods:
284
+
285
+ def Endset(self):
286
+ """
287
+ Return the subcategory of the homsets of ``self`` that are endomorphism sets.
288
+
289
+ EXAMPLES::
290
+
291
+ sage: Sets().Homsets().Endset()
292
+ Category of endsets of sets
293
+
294
+ sage: Posets().Homsets().Endset()
295
+ Category of endsets of posets
296
+ """
297
+ return self._with_axiom("Endset")
298
+
299
+ class Endset(CategoryWithAxiom):
300
+ """
301
+ The category of all endomorphism sets.
302
+
303
+ This category serves too purposes: making sure that the
304
+ ``Endset`` axiom is implemented in the category where it's
305
+ defined, namely ``Homsets``, and specifying that ``Endsets``
306
+ are monoids.
307
+
308
+ EXAMPLES::
309
+
310
+ sage: from sage.categories.homsets import Homsets
311
+ sage: Homsets().Endset()
312
+ Category of endsets
313
+ """
314
+ def extra_super_categories(self):
315
+ """
316
+ Implement the fact that endsets are monoids.
317
+
318
+ .. SEEALSO:: :meth:`CategoryWithAxiom.extra_super_categories`
319
+
320
+ EXAMPLES::
321
+
322
+ sage: from sage.categories.homsets import Homsets
323
+ sage: Homsets().Endset().extra_super_categories()
324
+ [Category of monoids]
325
+ """
326
+ from .monoids import Monoids
327
+ return [Monoids()]
328
+
329
+ class ParentMethods:
330
+ def is_endomorphism_set(self):
331
+ """
332
+ Return ``True`` as ``self`` is in the category
333
+ of ``Endsets``.
334
+
335
+ EXAMPLES::
336
+
337
+ sage: P.<t> = ZZ[]
338
+ sage: E = End(P)
339
+ sage: E.is_endomorphism_set()
340
+ True
341
+ """
342
+ return True
343
+
344
+ class ParentMethods:
345
+ def is_endomorphism_set(self):
346
+ """
347
+ Return ``True`` if the domain and codomain of ``self`` are the same
348
+ object.
349
+
350
+ EXAMPLES::
351
+
352
+ sage: P.<t> = ZZ[]
353
+ sage: f = P.hom([1/2*t])
354
+ sage: f.parent().is_endomorphism_set()
355
+ False
356
+ sage: g = P.hom([2*t])
357
+ sage: g.parent().is_endomorphism_set()
358
+ True
359
+ """
360
+ sD = self.domain()
361
+ sC = self.codomain()
362
+ if sC is None or sD is None:
363
+ raise RuntimeError("Domain or codomain of this homset have been deallocated")
364
+ return sD is sC
@@ -0,0 +1,73 @@
1
+ # sage_setup: distribution = sagemath-objects
2
+ """
3
+ Isomorphic Objects Functorial Construction
4
+
5
+ AUTHORS:
6
+
7
+ - Nicolas M. Thiery (2010): initial revision
8
+ """
9
+ #*****************************************************************************
10
+ # Copyright (C) 2009 Nicolas M. Thiery <nthiery at users.sf.net>
11
+ #
12
+ # Distributed under the terms of the GNU General Public License (GPL)
13
+ # http://www.gnu.org/licenses/
14
+ #*****************************************************************************
15
+
16
+ from sage.categories.category import Category
17
+ from sage.categories.covariant_functorial_construction import RegressiveCovariantConstructionCategory
18
+
19
+
20
+ class IsomorphicObjectsCategory(RegressiveCovariantConstructionCategory):
21
+
22
+ _functor_category = "IsomorphicObjects"
23
+
24
+ @classmethod
25
+ def default_super_categories(cls, category):
26
+ """
27
+ Return the default super categories of ``category.IsomorphicObjects()``.
28
+
29
+ Mathematical meaning: if `A` is the image of `B` by an
30
+ isomorphism in the category `C`, then `A` is both a subobject
31
+ of `B` and a quotient of `B` in the category `C`.
32
+
33
+ INPUT:
34
+
35
+ - ``cls`` -- the class ``IsomorphicObjectsCategory``
36
+ - ``category`` -- a category `Cat`
37
+
38
+ OUTPUT: a (join) category
39
+
40
+ In practice, this returns ``category.Subobjects()`` and
41
+ ``category.Quotients()``, joined together with the result of the method
42
+ :meth:`RegressiveCovariantConstructionCategory.default_super_categories() <sage.categories.covariant_functorial_construction.RegressiveCovariantConstructionCategory.default_super_categories>`
43
+ (that is the join of ``category`` and
44
+ ``cat.IsomorphicObjects()`` for each ``cat`` in the super
45
+ categories of ``category``).
46
+
47
+ EXAMPLES:
48
+
49
+ Consider ``category=Groups()``, which has ``cat=Monoids()`` as
50
+ super category. Then, the image of a group `G'` by a group
51
+ isomorphism is simultaneously a subgroup of `G`, a subquotient
52
+ of `G`, a group by itself, and the image of `G` by a monoid
53
+ isomorphism::
54
+
55
+ sage: Groups().IsomorphicObjects().super_categories()
56
+ [Category of groups,
57
+ Category of subquotients of monoids,
58
+ Category of quotients of semigroups,
59
+ Category of isomorphic objects of sets]
60
+
61
+ Mind the last item above: there is indeed currently nothing
62
+ implemented about isomorphic objects of monoids.
63
+
64
+ This resulted from the following call::
65
+
66
+ sage: sage.categories.isomorphic_objects.IsomorphicObjectsCategory.default_super_categories(Groups())
67
+ Join of Category of groups and
68
+ Category of subquotients of monoids and
69
+ Category of quotients of semigroups and
70
+ Category of isomorphic objects of sets
71
+ """
72
+ return Category.join([category.Subobjects(), category.Quotients(),
73
+ super().default_super_categories(category)])
@@ -0,0 +1,34 @@
1
+ # sage_setup: distribution = sagemath-objects
2
+ from sage.structure.parent cimport Parent
3
+ from sage.structure.element cimport Element
4
+
5
+ cdef class Map(Element):
6
+ cdef object __weakref__
7
+
8
+ cdef public int _coerce_cost
9
+ # a rough measure of the cost of using this morphism in the coercion system.
10
+ # 10 by default, 100 if a DefaultCoercionMorphism, 10000 if inexact.
11
+
12
+ cdef _update_slots(self, dict)
13
+ cdef dict _extra_slots(self)
14
+
15
+ # these methods require x is an element of domain, and returns an element with parent codomain
16
+ cpdef Element _call_(self, x)
17
+ cpdef Element _call_with_args(self, x, args=*, kwds=*)
18
+
19
+ cdef public domain # will be either a weakref or a constant map
20
+ cdef public codomain # will be a constant map
21
+ cdef Parent _codomain # for accessing the codomain directly
22
+ cdef object _category_for # category in which this is a morphism
23
+
24
+ cdef public _repr_type_str
25
+ cdef public bint _is_coercion
26
+
27
+ cpdef _pow_int(self, n)
28
+
29
+
30
+ cdef class Section(Map):
31
+ cdef Map _inverse
32
+
33
+ cdef class FormalCompositeMap(Map):
34
+ cdef __list