passagemath-objects 10.6.44__cp314-cp314t-macosx_13_0_arm64.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.
- passagemath_objects/.dylibs/libgmp.10.dylib +0 -0
- passagemath_objects/__init__.py +3 -0
- passagemath_objects-10.6.44.dist-info/METADATA +115 -0
- passagemath_objects-10.6.44.dist-info/RECORD +280 -0
- passagemath_objects-10.6.44.dist-info/WHEEL +6 -0
- passagemath_objects-10.6.44.dist-info/top_level.txt +3 -0
- sage/all__sagemath_objects.py +37 -0
- sage/arith/all__sagemath_objects.py +5 -0
- sage/arith/long.pxd +411 -0
- sage/arith/numerical_approx.cpython-314t-darwin.so +0 -0
- sage/arith/numerical_approx.pxd +35 -0
- sage/arith/numerical_approx.pyx +75 -0
- sage/arith/power.cpython-314t-darwin.so +0 -0
- sage/arith/power.pxd +31 -0
- sage/arith/power.pyx +127 -0
- sage/categories/action.cpython-314t-darwin.so +0 -0
- sage/categories/action.pxd +29 -0
- sage/categories/action.pyx +641 -0
- sage/categories/algebra_functor.py +745 -0
- sage/categories/all__sagemath_objects.py +33 -0
- sage/categories/basic.py +62 -0
- sage/categories/cartesian_product.py +295 -0
- sage/categories/category.py +3401 -0
- sage/categories/category_cy_helper.cpython-314t-darwin.so +0 -0
- sage/categories/category_cy_helper.pxd +8 -0
- sage/categories/category_cy_helper.pyx +322 -0
- sage/categories/category_singleton.cpython-314t-darwin.so +0 -0
- sage/categories/category_singleton.pxd +3 -0
- sage/categories/category_singleton.pyx +342 -0
- sage/categories/category_types.py +637 -0
- sage/categories/category_with_axiom.py +2876 -0
- sage/categories/covariant_functorial_construction.py +703 -0
- sage/categories/facade_sets.py +228 -0
- sage/categories/functor.cpython-314t-darwin.so +0 -0
- sage/categories/functor.pxd +7 -0
- sage/categories/functor.pyx +691 -0
- sage/categories/homset.py +1338 -0
- sage/categories/homsets.py +364 -0
- sage/categories/isomorphic_objects.py +73 -0
- sage/categories/map.cpython-314t-darwin.so +0 -0
- sage/categories/map.pxd +34 -0
- sage/categories/map.pyx +2106 -0
- sage/categories/morphism.cpython-314t-darwin.so +0 -0
- sage/categories/morphism.pxd +14 -0
- sage/categories/morphism.pyx +895 -0
- sage/categories/objects.py +167 -0
- sage/categories/primer.py +1696 -0
- sage/categories/pushout.py +4834 -0
- sage/categories/quotients.py +64 -0
- sage/categories/realizations.py +200 -0
- sage/categories/sets_cat.py +3290 -0
- sage/categories/sets_with_partial_maps.py +52 -0
- sage/categories/subobjects.py +64 -0
- sage/categories/subquotients.py +21 -0
- sage/categories/with_realizations.py +311 -0
- sage/cpython/__init__.py +19 -0
- sage/cpython/_py2_random.py +619 -0
- sage/cpython/all.py +3 -0
- sage/cpython/atexit.cpython-314t-darwin.so +0 -0
- sage/cpython/atexit.pyx +269 -0
- sage/cpython/builtin_types.cpython-314t-darwin.so +0 -0
- sage/cpython/builtin_types.pyx +7 -0
- sage/cpython/cython_metaclass.cpython-314t-darwin.so +0 -0
- sage/cpython/cython_metaclass.h +117 -0
- sage/cpython/cython_metaclass.pxd +3 -0
- sage/cpython/cython_metaclass.pyx +130 -0
- sage/cpython/debug.cpython-314t-darwin.so +0 -0
- sage/cpython/debug.pyx +302 -0
- sage/cpython/dict_del_by_value.cpython-314t-darwin.so +0 -0
- sage/cpython/dict_del_by_value.pxd +9 -0
- sage/cpython/dict_del_by_value.pyx +191 -0
- sage/cpython/dict_internal.h +245 -0
- sage/cpython/getattr.cpython-314t-darwin.so +0 -0
- sage/cpython/getattr.pxd +9 -0
- sage/cpython/getattr.pyx +439 -0
- sage/cpython/pycore_long.h +97 -0
- sage/cpython/pycore_long.pxd +10 -0
- sage/cpython/python_debug.h +44 -0
- sage/cpython/python_debug.pxd +47 -0
- sage/cpython/pyx_visit.h +13 -0
- sage/cpython/string.cpython-314t-darwin.so +0 -0
- sage/cpython/string.pxd +76 -0
- sage/cpython/string.pyx +34 -0
- sage/cpython/string_impl.h +60 -0
- sage/cpython/type.cpython-314t-darwin.so +0 -0
- sage/cpython/type.pxd +2 -0
- sage/cpython/type.pyx +40 -0
- sage/cpython/wrapperdescr.pxd +67 -0
- sage/ext/all__sagemath_objects.py +3 -0
- sage/ext/ccobject.h +64 -0
- sage/ext/cplusplus.pxd +17 -0
- sage/ext/mod_int.h +30 -0
- sage/ext/mod_int.pxd +24 -0
- sage/ext/stdsage.pxd +39 -0
- sage/groups/all__sagemath_objects.py +1 -0
- sage/groups/group.cpython-314t-darwin.so +0 -0
- sage/groups/group.pxd +14 -0
- sage/groups/group.pyx +322 -0
- sage/groups/old.cpython-314t-darwin.so +0 -0
- sage/groups/old.pxd +14 -0
- sage/groups/old.pyx +219 -0
- sage/libs/all__sagemath_objects.py +3 -0
- sage/libs/gmp/__init__.py +1 -0
- sage/libs/gmp/all.pxd +6 -0
- sage/libs/gmp/binop.pxd +23 -0
- sage/libs/gmp/misc.pxd +8 -0
- sage/libs/gmp/mpf.pxd +88 -0
- sage/libs/gmp/mpn.pxd +57 -0
- sage/libs/gmp/mpq.pxd +57 -0
- sage/libs/gmp/mpz.pxd +202 -0
- sage/libs/gmp/pylong.cpython-314t-darwin.so +0 -0
- sage/libs/gmp/pylong.pxd +12 -0
- sage/libs/gmp/pylong.pyx +150 -0
- sage/libs/gmp/random.pxd +25 -0
- sage/libs/gmp/randomize.pxd +59 -0
- sage/libs/gmp/types.pxd +53 -0
- sage/libs/gmpxx.pxd +19 -0
- sage/misc/abstract_method.py +276 -0
- sage/misc/all__sagemath_objects.py +43 -0
- sage/misc/bindable_class.py +253 -0
- sage/misc/c3_controlled.cpython-314t-darwin.so +0 -0
- sage/misc/c3_controlled.pxd +2 -0
- sage/misc/c3_controlled.pyx +1402 -0
- sage/misc/cachefunc.cpython-314t-darwin.so +0 -0
- sage/misc/cachefunc.pxd +43 -0
- sage/misc/cachefunc.pyx +3781 -0
- sage/misc/call.py +188 -0
- sage/misc/classcall_metaclass.cpython-314t-darwin.so +0 -0
- sage/misc/classcall_metaclass.pxd +14 -0
- sage/misc/classcall_metaclass.pyx +599 -0
- sage/misc/constant_function.cpython-314t-darwin.so +0 -0
- sage/misc/constant_function.pyx +130 -0
- sage/misc/decorators.py +747 -0
- sage/misc/fast_methods.cpython-314t-darwin.so +0 -0
- sage/misc/fast_methods.pxd +20 -0
- sage/misc/fast_methods.pyx +351 -0
- sage/misc/flatten.py +90 -0
- sage/misc/fpickle.cpython-314t-darwin.so +0 -0
- sage/misc/fpickle.pyx +177 -0
- sage/misc/function_mangling.cpython-314t-darwin.so +0 -0
- sage/misc/function_mangling.pxd +11 -0
- sage/misc/function_mangling.pyx +308 -0
- sage/misc/inherit_comparison.cpython-314t-darwin.so +0 -0
- sage/misc/inherit_comparison.pxd +5 -0
- sage/misc/inherit_comparison.pyx +105 -0
- sage/misc/instancedoc.cpython-314t-darwin.so +0 -0
- sage/misc/instancedoc.pyx +331 -0
- sage/misc/lazy_attribute.cpython-314t-darwin.so +0 -0
- sage/misc/lazy_attribute.pyx +607 -0
- sage/misc/lazy_format.py +135 -0
- sage/misc/lazy_import.cpython-314t-darwin.so +0 -0
- sage/misc/lazy_import.pyx +1299 -0
- sage/misc/lazy_import_cache.py +36 -0
- sage/misc/lazy_list.cpython-314t-darwin.so +0 -0
- sage/misc/lazy_list.pxd +19 -0
- sage/misc/lazy_list.pyx +1187 -0
- sage/misc/lazy_string.cpython-314t-darwin.so +0 -0
- sage/misc/lazy_string.pxd +7 -0
- sage/misc/lazy_string.pyx +546 -0
- sage/misc/misc.py +1066 -0
- sage/misc/misc_c.cpython-314t-darwin.so +0 -0
- sage/misc/misc_c.pxd +3 -0
- sage/misc/misc_c.pyx +766 -0
- sage/misc/namespace_package.py +37 -0
- sage/misc/nested_class.cpython-314t-darwin.so +0 -0
- sage/misc/nested_class.pxd +3 -0
- sage/misc/nested_class.pyx +394 -0
- sage/misc/persist.cpython-314t-darwin.so +0 -0
- sage/misc/persist.pyx +1251 -0
- sage/misc/prandom.py +418 -0
- sage/misc/randstate.cpython-314t-darwin.so +0 -0
- sage/misc/randstate.pxd +30 -0
- sage/misc/randstate.pyx +1059 -0
- sage/misc/repr.py +203 -0
- sage/misc/reset.cpython-314t-darwin.so +0 -0
- sage/misc/reset.pyx +196 -0
- sage/misc/sage_ostools.cpython-314t-darwin.so +0 -0
- sage/misc/sage_ostools.pyx +323 -0
- sage/misc/sage_timeit.py +275 -0
- sage/misc/sage_timeit_class.cpython-314t-darwin.so +0 -0
- sage/misc/sage_timeit_class.pyx +120 -0
- sage/misc/sage_unittest.py +637 -0
- sage/misc/sageinspect.py +2768 -0
- sage/misc/session.cpython-314t-darwin.so +0 -0
- sage/misc/session.pyx +392 -0
- sage/misc/superseded.py +557 -0
- sage/misc/test_nested_class.py +228 -0
- sage/misc/timing.py +264 -0
- sage/misc/unknown.py +222 -0
- sage/misc/verbose.py +253 -0
- sage/misc/weak_dict.cpython-314t-darwin.so +0 -0
- sage/misc/weak_dict.pxd +15 -0
- sage/misc/weak_dict.pyx +1231 -0
- sage/modules/all__sagemath_objects.py +1 -0
- sage/modules/module.cpython-314t-darwin.so +0 -0
- sage/modules/module.pxd +5 -0
- sage/modules/module.pyx +329 -0
- sage/rings/all__sagemath_objects.py +3 -0
- sage/rings/integer_fake.h +22 -0
- sage/rings/integer_fake.pxd +55 -0
- sage/sets/all__sagemath_objects.py +3 -0
- sage/sets/pythonclass.cpython-314t-darwin.so +0 -0
- sage/sets/pythonclass.pxd +9 -0
- sage/sets/pythonclass.pyx +247 -0
- sage/structure/__init__.py +4 -0
- sage/structure/all.py +30 -0
- sage/structure/category_object.cpython-314t-darwin.so +0 -0
- sage/structure/category_object.pxd +28 -0
- sage/structure/category_object.pyx +1087 -0
- sage/structure/coerce.cpython-314t-darwin.so +0 -0
- sage/structure/coerce.pxd +44 -0
- sage/structure/coerce.pyx +2107 -0
- sage/structure/coerce_actions.cpython-314t-darwin.so +0 -0
- sage/structure/coerce_actions.pxd +27 -0
- sage/structure/coerce_actions.pyx +988 -0
- sage/structure/coerce_dict.cpython-314t-darwin.so +0 -0
- sage/structure/coerce_dict.pxd +51 -0
- sage/structure/coerce_dict.pyx +1557 -0
- sage/structure/coerce_exceptions.py +23 -0
- sage/structure/coerce_maps.cpython-314t-darwin.so +0 -0
- sage/structure/coerce_maps.pxd +28 -0
- sage/structure/coerce_maps.pyx +718 -0
- sage/structure/debug_options.cpython-314t-darwin.so +0 -0
- sage/structure/debug_options.pxd +6 -0
- sage/structure/debug_options.pyx +54 -0
- sage/structure/dynamic_class.py +541 -0
- sage/structure/element.cpython-314t-darwin.so +0 -0
- sage/structure/element.pxd +272 -0
- sage/structure/element.pyx +4772 -0
- sage/structure/element_wrapper.cpython-314t-darwin.so +0 -0
- sage/structure/element_wrapper.pxd +12 -0
- sage/structure/element_wrapper.pyx +582 -0
- sage/structure/factorization.py +1422 -0
- sage/structure/factorization_integer.py +105 -0
- sage/structure/factory.cpython-314t-darwin.so +0 -0
- sage/structure/factory.pyx +786 -0
- sage/structure/formal_sum.py +489 -0
- sage/structure/gens_py.py +73 -0
- sage/structure/global_options.py +1743 -0
- sage/structure/indexed_generators.py +863 -0
- sage/structure/list_clone.cpython-314t-darwin.so +0 -0
- sage/structure/list_clone.pxd +65 -0
- sage/structure/list_clone.pyx +1867 -0
- sage/structure/list_clone_demo.cpython-314t-darwin.so +0 -0
- sage/structure/list_clone_demo.pyx +248 -0
- sage/structure/list_clone_timings.py +179 -0
- sage/structure/list_clone_timings_cy.cpython-314t-darwin.so +0 -0
- sage/structure/list_clone_timings_cy.pyx +86 -0
- sage/structure/mutability.cpython-314t-darwin.so +0 -0
- sage/structure/mutability.pxd +21 -0
- sage/structure/mutability.pyx +348 -0
- sage/structure/nonexact.py +69 -0
- sage/structure/parent.cpython-314t-darwin.so +0 -0
- sage/structure/parent.pxd +112 -0
- sage/structure/parent.pyx +3093 -0
- sage/structure/parent_base.cpython-314t-darwin.so +0 -0
- sage/structure/parent_base.pxd +13 -0
- sage/structure/parent_base.pyx +44 -0
- sage/structure/parent_gens.cpython-314t-darwin.so +0 -0
- sage/structure/parent_gens.pxd +22 -0
- sage/structure/parent_gens.pyx +377 -0
- sage/structure/parent_old.cpython-314t-darwin.so +0 -0
- sage/structure/parent_old.pxd +25 -0
- sage/structure/parent_old.pyx +294 -0
- sage/structure/proof/__init__.py +1 -0
- sage/structure/proof/all.py +243 -0
- sage/structure/proof/proof.py +300 -0
- sage/structure/richcmp.cpython-314t-darwin.so +0 -0
- sage/structure/richcmp.pxd +213 -0
- sage/structure/richcmp.pyx +495 -0
- sage/structure/sage_object.cpython-314t-darwin.so +0 -0
- sage/structure/sage_object.pxd +3 -0
- sage/structure/sage_object.pyx +988 -0
- sage/structure/sage_object_test.py +19 -0
- sage/structure/sequence.py +937 -0
- sage/structure/set_factories.py +1178 -0
- sage/structure/set_factories_example.py +527 -0
- sage/structure/support_view.py +179 -0
- sage/structure/test_factory.py +56 -0
- sage/structure/unique_representation.py +1359 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-objects
|
|
2
|
+
"""
|
|
3
|
+
Quotients 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 QuotientsCategory(RegressiveCovariantConstructionCategory):
|
|
21
|
+
|
|
22
|
+
_functor_category = "Quotients"
|
|
23
|
+
|
|
24
|
+
@classmethod
|
|
25
|
+
def default_super_categories(cls, category):
|
|
26
|
+
"""
|
|
27
|
+
Return the default super categories of ``category.Quotients()``.
|
|
28
|
+
|
|
29
|
+
Mathematical meaning: if `A` is a quotient of `B` in the
|
|
30
|
+
category `C`, then `A` is also a subquotient of `B` in the
|
|
31
|
+
category `C`.
|
|
32
|
+
|
|
33
|
+
INPUT:
|
|
34
|
+
|
|
35
|
+
- ``cls`` -- the class ``QuotientsCategory``
|
|
36
|
+
- ``category`` -- a category `Cat`
|
|
37
|
+
|
|
38
|
+
OUTPUT: a (join) category
|
|
39
|
+
|
|
40
|
+
In practice, this returns ``category.Subquotients()``, joined
|
|
41
|
+
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 ``cat.Quotients()`` for
|
|
44
|
+
each ``cat`` in the super categories of ``category``).
|
|
45
|
+
|
|
46
|
+
EXAMPLES:
|
|
47
|
+
|
|
48
|
+
Consider ``category=Groups()``, which has ``cat=Monoids()`` as
|
|
49
|
+
super category. Then, a subgroup of a group `G` is
|
|
50
|
+
simultaneously a subquotient of `G`, a group by itself, and a
|
|
51
|
+
quotient monoid of ``G``::
|
|
52
|
+
|
|
53
|
+
sage: Groups().Quotients().super_categories()
|
|
54
|
+
[Category of groups, Category of subquotients of monoids, Category of quotients of semigroups]
|
|
55
|
+
|
|
56
|
+
Mind the last item above: there is indeed currently nothing
|
|
57
|
+
implemented about quotient monoids.
|
|
58
|
+
|
|
59
|
+
This resulted from the following call::
|
|
60
|
+
|
|
61
|
+
sage: sage.categories.quotients.QuotientsCategory.default_super_categories(Groups())
|
|
62
|
+
Join of Category of groups and Category of subquotients of monoids and Category of quotients of semigroups
|
|
63
|
+
"""
|
|
64
|
+
return Category.join([category.Subquotients(), super().default_super_categories(category)])
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-objects
|
|
2
|
+
"""
|
|
3
|
+
Realizations Covariant Functorial Construction
|
|
4
|
+
|
|
5
|
+
.. SEEALSO::
|
|
6
|
+
|
|
7
|
+
- :func:`Sets().WithRealizations <sage.categories.with_realizations.WithRealizations>`
|
|
8
|
+
for an introduction to *realizations* and *with realizations*.
|
|
9
|
+
- :mod:`sage.categories.covariant_functorial_construction`
|
|
10
|
+
for an introduction to covariant functorial constructions.
|
|
11
|
+
- :mod:`sage.categories.examples.with_realizations` for an example.
|
|
12
|
+
"""
|
|
13
|
+
#*****************************************************************************
|
|
14
|
+
# Copyright (C) 2010-2012 Nicolas M. Thiery <nthiery at users.sf.net>
|
|
15
|
+
#
|
|
16
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
17
|
+
# http://www.gnu.org/licenses/
|
|
18
|
+
#*****************************************************************************
|
|
19
|
+
|
|
20
|
+
from sage.misc.bindable_class import BindableClass
|
|
21
|
+
from sage.categories.category import Category
|
|
22
|
+
from sage.categories.category_types import Category_over_base
|
|
23
|
+
from sage.categories.covariant_functorial_construction import RegressiveCovariantConstructionCategory
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class RealizationsCategory(RegressiveCovariantConstructionCategory):
|
|
27
|
+
"""
|
|
28
|
+
An abstract base class for all categories of realizations category.
|
|
29
|
+
|
|
30
|
+
Realization are implemented as
|
|
31
|
+
:class:`~sage.categories.covariant_functorial_construction.RegressiveCovariantConstructionCategory`.
|
|
32
|
+
See there for the documentation of how the various bindings such
|
|
33
|
+
as ``Sets().Realizations()`` and ``P.Realizations()``, where ``P``
|
|
34
|
+
is a parent, work.
|
|
35
|
+
|
|
36
|
+
.. SEEALSO:: :func:`Sets().WithRealizations <sage.categories.with_realizations.WithRealizations>`
|
|
37
|
+
|
|
38
|
+
TESTS::
|
|
39
|
+
|
|
40
|
+
sage: Sets().Realizations
|
|
41
|
+
<bound method Realizations of Category of sets>
|
|
42
|
+
sage: Sets().Realizations()
|
|
43
|
+
Category of realizations of sets
|
|
44
|
+
sage: Sets().Realizations().super_categories()
|
|
45
|
+
[Category of sets]
|
|
46
|
+
sage: Groups().Realizations().super_categories()
|
|
47
|
+
[Category of groups, Category of realizations of unital magmas]
|
|
48
|
+
"""
|
|
49
|
+
|
|
50
|
+
_functor_category = "Realizations"
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def Realizations(self):
|
|
54
|
+
"""
|
|
55
|
+
Return the category of realizations of the parent ``self`` or of objects
|
|
56
|
+
of the category ``self``
|
|
57
|
+
|
|
58
|
+
INPUT:
|
|
59
|
+
|
|
60
|
+
- ``self`` -- a parent or a concrete category
|
|
61
|
+
|
|
62
|
+
.. NOTE:: this *function* is actually inserted as a *method* in the class
|
|
63
|
+
:class:`~sage.categories.category.Category` (see
|
|
64
|
+
:meth:`~sage.categories.category.Category.Realizations`). It is defined
|
|
65
|
+
here for code locality reasons.
|
|
66
|
+
|
|
67
|
+
EXAMPLES:
|
|
68
|
+
|
|
69
|
+
The category of realizations of some algebra::
|
|
70
|
+
|
|
71
|
+
sage: Algebras(QQ).Realizations()
|
|
72
|
+
Join of Category of algebras over Rational Field
|
|
73
|
+
and Category of realizations of unital magmas
|
|
74
|
+
|
|
75
|
+
The category of realizations of a given algebra::
|
|
76
|
+
|
|
77
|
+
sage: A = Sets().WithRealizations().example(); A # needs sage.modules
|
|
78
|
+
The subset algebra of {1, 2, 3} over Rational Field
|
|
79
|
+
sage: A.Realizations() # needs sage.modules
|
|
80
|
+
Category of realizations of
|
|
81
|
+
The subset algebra of {1, 2, 3} over Rational Field
|
|
82
|
+
|
|
83
|
+
sage: C = GradedHopfAlgebrasWithBasis(QQ).Realizations(); C
|
|
84
|
+
Join of Category of graded Hopf algebras with basis over Rational Field
|
|
85
|
+
and Category of realizations of Hopf algebras over Rational Field
|
|
86
|
+
sage: C.super_categories()
|
|
87
|
+
[Category of graded Hopf algebras with basis over Rational Field,
|
|
88
|
+
Category of realizations of Hopf algebras over Rational Field]
|
|
89
|
+
|
|
90
|
+
sage: TestSuite(C).run()
|
|
91
|
+
|
|
92
|
+
.. SEEALSO::
|
|
93
|
+
|
|
94
|
+
- :func:`Sets().WithRealizations <sage.categories.with_realizations.WithRealizations>`
|
|
95
|
+
- :class:`ClasscallMetaclass`
|
|
96
|
+
|
|
97
|
+
.. TODO::
|
|
98
|
+
|
|
99
|
+
Add an optional argument to allow for::
|
|
100
|
+
|
|
101
|
+
sage: Realizations(A, category=Blahs()) # todo: not implemented
|
|
102
|
+
"""
|
|
103
|
+
if isinstance(self, Category):
|
|
104
|
+
return RealizationsCategory.category_of(self)
|
|
105
|
+
else:
|
|
106
|
+
return getattr(self.__class__, "Realizations")(self)
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
Category.Realizations = Realizations
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
class Category_realization_of_parent(Category_over_base, BindableClass):
|
|
113
|
+
"""
|
|
114
|
+
An abstract base class for categories of all realizations of a given parent.
|
|
115
|
+
|
|
116
|
+
INPUT:
|
|
117
|
+
|
|
118
|
+
- ``parent_with_realization`` -- a parent
|
|
119
|
+
|
|
120
|
+
.. SEEALSO:: :func:`Sets().WithRealizations <sage.categories.with_realizations.WithRealizations>`
|
|
121
|
+
|
|
122
|
+
EXAMPLES::
|
|
123
|
+
|
|
124
|
+
sage: A = Sets().WithRealizations().example(); A # needs sage.modules
|
|
125
|
+
The subset algebra of {1, 2, 3} over Rational Field
|
|
126
|
+
|
|
127
|
+
The role of this base class is to implement some technical goodies, like
|
|
128
|
+
the binding ``A.Realizations()`` when a subclass ``Realizations`` is
|
|
129
|
+
implemented as a nested class in ``A``
|
|
130
|
+
(see the :mod:`code of the example <sage.categories.examples.with_realizations.SubsetAlgebra>`)::
|
|
131
|
+
|
|
132
|
+
sage: C = A.Realizations(); C # needs sage.modules
|
|
133
|
+
Category of realizations of
|
|
134
|
+
The subset algebra of {1, 2, 3} over Rational Field
|
|
135
|
+
|
|
136
|
+
as well as the name for that category.
|
|
137
|
+
"""
|
|
138
|
+
def __init__(self, parent_with_realization):
|
|
139
|
+
"""
|
|
140
|
+
TESTS::
|
|
141
|
+
|
|
142
|
+
sage: # needs sage.combinat sage.modules
|
|
143
|
+
sage: from sage.categories.realizations import Category_realization_of_parent
|
|
144
|
+
sage: A = Sets().WithRealizations().example(); A
|
|
145
|
+
The subset algebra of {1, 2, 3} over Rational Field
|
|
146
|
+
sage: C = A.Realizations(); C
|
|
147
|
+
Category of realizations of
|
|
148
|
+
The subset algebra of {1, 2, 3} over Rational Field
|
|
149
|
+
sage: isinstance(C, Category_realization_of_parent)
|
|
150
|
+
True
|
|
151
|
+
sage: C.parent_with_realization
|
|
152
|
+
The subset algebra of {1, 2, 3} over Rational Field
|
|
153
|
+
sage: TestSuite(C).run(skip=["_test_category_over_bases"])
|
|
154
|
+
|
|
155
|
+
.. TODO::
|
|
156
|
+
|
|
157
|
+
Fix the failing test by making ``C`` a singleton
|
|
158
|
+
category. This will require some fiddling with the
|
|
159
|
+
assertion in :meth:`Category_singleton.__classcall__`
|
|
160
|
+
"""
|
|
161
|
+
Category_over_base.__init__(self, parent_with_realization)
|
|
162
|
+
self.parent_with_realization = parent_with_realization
|
|
163
|
+
|
|
164
|
+
def _get_name(self):
|
|
165
|
+
"""
|
|
166
|
+
Return a human readable string specifying which kind of bases this category is for.
|
|
167
|
+
|
|
168
|
+
It is obtained by splitting and lower casing the last part of
|
|
169
|
+
the class name.
|
|
170
|
+
|
|
171
|
+
EXAMPLES::
|
|
172
|
+
|
|
173
|
+
sage: from sage.categories.realizations import Category_realization_of_parent
|
|
174
|
+
sage: class MultiplicativeBasesOnPrimitiveElements(Category_realization_of_parent):
|
|
175
|
+
....: def super_categories(self): return [Objects()]
|
|
176
|
+
sage: Sym = SymmetricFunctions(QQ); Sym.rename('Sym') # needs sage.combinat sage.modules
|
|
177
|
+
sage: MultiplicativeBasesOnPrimitiveElements(Sym)._get_name() # needs sage.combinat sage.modules
|
|
178
|
+
'multiplicative bases on primitive elements'
|
|
179
|
+
"""
|
|
180
|
+
import re
|
|
181
|
+
return re.sub(".[A-Z]", lambda s: s.group()[0]+" "+s.group()[1], self.__class__.__base__.__name__.split(".")[-1]).lower()
|
|
182
|
+
|
|
183
|
+
def _repr_object_names(self):
|
|
184
|
+
"""
|
|
185
|
+
Return the name of the objects of this category.
|
|
186
|
+
|
|
187
|
+
.. SEEALSO:: :meth:`Category._repr_object_names`
|
|
188
|
+
|
|
189
|
+
EXAMPLES::
|
|
190
|
+
|
|
191
|
+
sage: from sage.categories.realizations import Category_realization_of_parent
|
|
192
|
+
sage: class MultiplicativeBasesOnPrimitiveElements(Category_realization_of_parent):
|
|
193
|
+
....: def super_categories(self): return [Objects()]
|
|
194
|
+
sage: Sym = SymmetricFunctions(QQ); Sym.rename('Sym') # needs sage.combinat sage.modules
|
|
195
|
+
sage: C = MultiplicativeBasesOnPrimitiveElements(Sym); C # needs sage.combinat sage.modules
|
|
196
|
+
Category of multiplicative bases on primitive elements of Sym
|
|
197
|
+
sage: C._repr_object_names() # needs sage.combinat sage.modules
|
|
198
|
+
'multiplicative bases on primitive elements of Sym'
|
|
199
|
+
"""
|
|
200
|
+
return "{} of {}".format(self._get_name(), self.base())
|