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,228 @@
1
+ # sage_setup: distribution = sagemath-objects
2
+ r"""
3
+ Facade Sets
4
+
5
+ For background, see :ref:`What is a facade set? <facade-sets>`.
6
+ """
7
+ #*****************************************************************************
8
+ # Copyright (C) 2010-2011 Nicolas M. Thiery <nthiery at users.sf.net>
9
+ #
10
+ # Distributed under the terms of the GNU General Public License (GPL)
11
+ # http://www.gnu.org/licenses/
12
+ #******************************************************************************
13
+
14
+ from sage.categories.category_with_axiom import CategoryWithAxiom
15
+
16
+
17
+ class FacadeSets(CategoryWithAxiom):
18
+ def example(self, choice='subset'):
19
+ r"""
20
+ Return an example of facade set, as per
21
+ :meth:`Category.example()
22
+ <sage.categories.category.Category.example>`.
23
+
24
+ INPUT:
25
+
26
+ - ``choice`` -- 'union' or 'subset' (default: ``'subset'``)
27
+
28
+ EXAMPLES::
29
+
30
+ sage: Sets().Facade().example()
31
+ An example of facade set: the monoid of positive integers
32
+ sage: Sets().Facade().example(choice='union')
33
+ An example of a facade set: the integers completed by +-infinity
34
+ sage: Sets().Facade().example(choice='subset')
35
+ An example of facade set: the monoid of positive integers
36
+ """
37
+ import sage.categories.examples.facade_sets as examples
38
+ if choice == "union":
39
+ return examples.IntegersCompletion()
40
+ elif choice == 'subset':
41
+ return examples.PositiveIntegerMonoid()
42
+ else:
43
+ raise TypeError("choice should be 'union' or 'subset'")
44
+
45
+ class ParentMethods:
46
+
47
+ def _element_constructor_(self, element):
48
+ """
49
+ Coerce ``element`` into ``self``.
50
+
51
+ INPUT:
52
+
53
+ - ``element`` -- any object
54
+
55
+ This default implementation returns ``element`` if
56
+ ``self`` is a facade for ``parent(element)``. Otherwise it
57
+ attempts in turn to coerce ``element`` into each parent
58
+ ``self`` is a facade for.
59
+
60
+ This implementation is only valid for a facade parent
61
+ which models the full union of the parents it is a facade
62
+ for. Other facade parents should redefine
63
+ :meth:`element_constructor` appropriately.
64
+
65
+ EXAMPLES::
66
+
67
+ sage: S = Sets().Facade().example("union"); S
68
+ An example of a facade set: the integers completed by +-infinity
69
+ sage: S(1)
70
+ 1
71
+ sage: S(1/2)
72
+ Traceback (most recent call last):
73
+ ...
74
+ ValueError: Can't coerce `1/2` in any parent `An example of a facade set: the integers completed by +-infinity` is a facade for
75
+ sage: S(2/1)
76
+ 2
77
+ sage: S(2/1).parent()
78
+ Integer Ring
79
+ sage: S(int(1))
80
+ 1
81
+ sage: S(int(1)).parent()
82
+ Integer Ring
83
+
84
+ Facade parents that model strict subsets should redefine
85
+ :meth:`element_constructor`::
86
+
87
+ sage: S = Sets().Facade().example(); S
88
+ An example of facade set: the monoid of positive integers
89
+ sage: S(-1)
90
+ Traceback (most recent call last):
91
+ ...
92
+ ValueError: %s should be positive
93
+ """
94
+ if self.is_parent_of(element):
95
+ return element
96
+ else:
97
+ parents = self.facade_for()
98
+ if parents is True:
99
+ raise NotImplementedError
100
+ for parent in self.facade_for():
101
+ try:
102
+ return parent(element)
103
+ except Exception:
104
+ pass
105
+ raise ValueError("Can't coerce `%s` in any parent `%s` is a facade for" % (element, self))
106
+
107
+ def facade_for(self):
108
+ """
109
+ Return the parents this set is a facade for.
110
+
111
+ This default implementation assumes that ``self`` has
112
+ an attribute ``_facade_for``, typically initialized by
113
+ :meth:`Parent.__init__`. If the attribute is not present, the method
114
+ raises a :exc:`NotImplementedError`.
115
+
116
+ EXAMPLES::
117
+
118
+ sage: S = Sets().Facade().example(); S
119
+ An example of facade set: the monoid of positive integers
120
+ sage: S.facade_for()
121
+ (Integer Ring,)
122
+
123
+ Check that :issue:`13801` is corrected::
124
+
125
+ sage: class A(Parent):
126
+ ....: def __init__(self):
127
+ ....: Parent.__init__(self, category=Sets(), facade=True)
128
+ sage: a = A()
129
+ sage: a.facade_for()
130
+ Traceback (most recent call last):
131
+ ...
132
+ NotImplementedError: this parent did not specify which parents it is a facade for
133
+ """
134
+ try:
135
+ return self._facade_for
136
+ except AttributeError:
137
+ raise NotImplementedError("this parent did not specify which parents it is a facade for")
138
+
139
+ def is_parent_of(self, element):
140
+ """
141
+ Return whether ``self`` is the parent of ``element``.
142
+
143
+ INPUT:
144
+
145
+ - ``element`` -- any object
146
+
147
+ Since ``self`` is a facade domain, this actually tests
148
+ whether the parent of ``element`` is any of the parent
149
+ ``self`` is a facade for.
150
+
151
+ EXAMPLES::
152
+
153
+ sage: S = Sets().Facade().example(); S
154
+ An example of facade set: the monoid of positive integers
155
+ sage: S.is_parent_of(1)
156
+ True
157
+ sage: S.is_parent_of(1/2)
158
+ False
159
+
160
+ This method differs from :meth:`__contains__` in two
161
+ ways. First, this does not take into account the fact
162
+ that ``self`` may be a strict subset of the parent(s)
163
+ it is a facade for::
164
+
165
+ sage: -1 in S, S.is_parent_of(-1)
166
+ (False, True)
167
+
168
+ Furthermore, there is no coercion attempted::
169
+
170
+ sage: int(1) in S, S.is_parent_of(int(1))
171
+ (True, False)
172
+
173
+ .. warning::
174
+
175
+ this implementation does not handle facade parents of facade
176
+ parents. Is this a feature we want generically?
177
+ """
178
+ parents = self.facade_for()
179
+ if parents is True:
180
+ return True
181
+ from sage.structure.element import parent
182
+ return parent(element) in parents
183
+
184
+ def __contains__(self, element):
185
+ """
186
+ Membership testing.
187
+
188
+ Returns whether ``element`` is in one of the parents
189
+ ``self`` is a facade for.
190
+
191
+ .. warning::
192
+
193
+ this default implementation is currently
194
+ overridden by :meth:`Parent.__contains__`.
195
+
196
+ EXAMPLES::
197
+
198
+ sage: S = Sets().Facade().example("union"); S
199
+ An example of a facade set: the integers completed by +-infinity
200
+ sage: 1 in S, -5 in S, oo in S, -oo in S, int(1) in S, 2/1 in S
201
+ (True, True, True, True, True, True)
202
+ sage: 1/2 in S, "bla" in S
203
+ (False, False)
204
+ """
205
+ return any(element in parent for parent in self.facade_for())
206
+
207
+ def _an_element_(self):
208
+ """
209
+ Try to return an element of ``self``, as per
210
+ :meth:`Sets.ParentMethods.an_element`.
211
+
212
+ For each parent ``self`` is a facade for, this default
213
+ implementation tries the method ``an_element`` until it finds an
214
+ element in ``self``. If none is found, this raises a
215
+ :exc:`NotImplementedError`.
216
+
217
+ EXAMPLES::
218
+
219
+ sage: S = Sets().Facade().example(); S
220
+ An example of facade set: the monoid of positive integers
221
+ sage: S.an_element()
222
+ 1
223
+ """
224
+ for parent in self.facade_for():
225
+ x = parent.an_element()
226
+ if x in self:
227
+ return x
228
+ raise NotImplementedError
@@ -0,0 +1,7 @@
1
+ # sage_setup: distribution = sagemath-objects
2
+ from sage.structure.sage_object cimport SageObject
3
+
4
+ cdef class Functor(SageObject):
5
+ cdef __weakref__
6
+ cdef object __domain
7
+ cdef object __codomain