passagemath-objects 10.6.41__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.
Potentially problematic release.
This version of passagemath-objects might be problematic. Click here for more details.
- passagemath_objects/.dylibs/libgmp.10.dylib +0 -0
- passagemath_objects/__init__.py +3 -0
- passagemath_objects-10.6.41.dist-info/METADATA +115 -0
- passagemath_objects-10.6.41.dist-info/RECORD +280 -0
- passagemath_objects-10.6.41.dist-info/WHEEL +6 -0
- passagemath_objects-10.6.41.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 +2112 -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 +3228 -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 +276 -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,33 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-objects
|
|
2
|
+
# Subset of sage.categories.all that is made available by the sage-objects distribution
|
|
3
|
+
|
|
4
|
+
from sage.misc.lazy_import import lazy_import
|
|
5
|
+
|
|
6
|
+
# Resolve a circular import so that "import sage.categories.all" can succeed
|
|
7
|
+
# in initializing the category system.
|
|
8
|
+
import sage.structure.category_object # imports sage.categories.category
|
|
9
|
+
|
|
10
|
+
# Small part of "from sage.categories.basic import *":
|
|
11
|
+
from sage.categories.objects import Objects
|
|
12
|
+
from sage.categories.sets_cat import Sets, EmptySetError
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
from sage.categories.category import Category
|
|
16
|
+
|
|
17
|
+
from sage.categories.category_types import Elements
|
|
18
|
+
|
|
19
|
+
from sage.categories.cartesian_product import cartesian_product
|
|
20
|
+
|
|
21
|
+
from sage.categories.functor import (ForgetfulFunctor,
|
|
22
|
+
IdentityFunctor)
|
|
23
|
+
|
|
24
|
+
from sage.categories.homset import (Hom, hom,
|
|
25
|
+
End, end,
|
|
26
|
+
Homset, HomsetWithBase)
|
|
27
|
+
|
|
28
|
+
from sage.categories.morphism import Morphism
|
|
29
|
+
|
|
30
|
+
from sage.categories.realizations import Realizations
|
|
31
|
+
|
|
32
|
+
from sage.categories.sets_with_partial_maps import SetsWithPartialMaps
|
|
33
|
+
del lazy_import
|
sage/categories/basic.py
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-objects
|
|
2
|
+
# delvewheel: patch
|
|
3
|
+
r"""
|
|
4
|
+
A subset of sage.categories.all with just the basic categories needed
|
|
5
|
+
for sage startup (i.e. to define ZZ, QQ, ...).
|
|
6
|
+
"""
|
|
7
|
+
# *****************************************************************************
|
|
8
|
+
# Copyright (C) 2008-2009 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.objects import Objects
|
|
15
|
+
from sage.categories.sets_cat import Sets, EmptySetError
|
|
16
|
+
from sage.categories.posets import Posets
|
|
17
|
+
|
|
18
|
+
# For backward compatibility; will be deprecated at some point
|
|
19
|
+
PartiallyOrderedSets = Posets
|
|
20
|
+
OrderedSets = Posets
|
|
21
|
+
|
|
22
|
+
from sage.categories.additive_magmas import AdditiveMagmas
|
|
23
|
+
from sage.categories.commutative_additive_semigroups import (
|
|
24
|
+
CommutativeAdditiveSemigroups,
|
|
25
|
+
)
|
|
26
|
+
from sage.categories.commutative_additive_monoids import CommutativeAdditiveMonoids
|
|
27
|
+
from sage.categories.commutative_additive_groups import CommutativeAdditiveGroups
|
|
28
|
+
|
|
29
|
+
from sage.categories.magmas import Magmas
|
|
30
|
+
from sage.categories.semigroups import Semigroups
|
|
31
|
+
from sage.categories.monoids import Monoids
|
|
32
|
+
from sage.categories.groups import Groups
|
|
33
|
+
from sage.categories.partially_ordered_monoids import PartiallyOrderedMonoids
|
|
34
|
+
|
|
35
|
+
# For backward compatibility; might be deprecated at some point
|
|
36
|
+
OrderedMonoids = PartiallyOrderedMonoids
|
|
37
|
+
|
|
38
|
+
from sage.categories.rngs import Rngs
|
|
39
|
+
from sage.categories.semirings import Semirings
|
|
40
|
+
from sage.categories.rings import Rings
|
|
41
|
+
from sage.categories.domains import Domains
|
|
42
|
+
from sage.categories.division_rings import DivisionRings
|
|
43
|
+
|
|
44
|
+
from sage.categories.commutative_rings import CommutativeRings
|
|
45
|
+
from sage.categories.integral_domains import IntegralDomains
|
|
46
|
+
from sage.categories.gcd_domains import GcdDomains
|
|
47
|
+
from sage.categories.dedekind_domains import DedekindDomains
|
|
48
|
+
from sage.categories.principal_ideal_domains import PrincipalIdealDomains
|
|
49
|
+
from sage.categories.euclidean_domains import EuclideanDomains
|
|
50
|
+
from sage.categories.unique_factorization_domains import UniqueFactorizationDomains
|
|
51
|
+
|
|
52
|
+
from sage.categories.fields import Fields
|
|
53
|
+
from sage.categories.quotient_fields import QuotientFields
|
|
54
|
+
from sage.categories.finite_fields import FiniteFields
|
|
55
|
+
from sage.categories.discrete_valuation import (
|
|
56
|
+
DiscreteValuationRings,
|
|
57
|
+
DiscreteValuationFields,
|
|
58
|
+
)
|
|
59
|
+
from sage.categories.complete_discrete_valuation import (
|
|
60
|
+
CompleteDiscreteValuationRings,
|
|
61
|
+
CompleteDiscreteValuationFields,
|
|
62
|
+
)
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-objects
|
|
2
|
+
"""
|
|
3
|
+
Cartesian Product Functorial Construction
|
|
4
|
+
|
|
5
|
+
AUTHORS:
|
|
6
|
+
|
|
7
|
+
- Nicolas M. Thiery (2008-2010): initial revision and refactorization
|
|
8
|
+
"""
|
|
9
|
+
#*****************************************************************************
|
|
10
|
+
# Copyright (C) 2010 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
|
+
try:
|
|
17
|
+
from typing import Self # type: ignore (Python >= 3.11)
|
|
18
|
+
except ImportError:
|
|
19
|
+
from typing_extensions import Self # type: ignore (Python 3.10)
|
|
20
|
+
|
|
21
|
+
from sage.categories.covariant_functorial_construction import (
|
|
22
|
+
CovariantConstructionCategory,
|
|
23
|
+
CovariantFunctorialConstruction,
|
|
24
|
+
)
|
|
25
|
+
from sage.categories.pushout import MultivariateConstructionFunctor
|
|
26
|
+
from sage.misc.lazy_import import lazy_import
|
|
27
|
+
|
|
28
|
+
native_python_containers = {tuple, list, set, frozenset, range}
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class CartesianProductFunctor(CovariantFunctorialConstruction, MultivariateConstructionFunctor):
|
|
32
|
+
"""
|
|
33
|
+
The Cartesian product functor.
|
|
34
|
+
|
|
35
|
+
EXAMPLES::
|
|
36
|
+
|
|
37
|
+
sage: cartesian_product
|
|
38
|
+
The cartesian_product functorial construction
|
|
39
|
+
|
|
40
|
+
``cartesian_product`` takes a finite collection of sets, and
|
|
41
|
+
constructs the Cartesian product of those sets::
|
|
42
|
+
|
|
43
|
+
sage: A = FiniteEnumeratedSet(['a','b','c'])
|
|
44
|
+
sage: B = FiniteEnumeratedSet([1,2])
|
|
45
|
+
sage: C = cartesian_product([A, B]); C
|
|
46
|
+
The Cartesian product of ({'a', 'b', 'c'}, {1, 2})
|
|
47
|
+
sage: C.an_element()
|
|
48
|
+
('a', 1)
|
|
49
|
+
sage: C.list() # todo: not implemented
|
|
50
|
+
[['a', 1], ['a', 2], ['b', 1], ['b', 2], ['c', 1], ['c', 2]]
|
|
51
|
+
|
|
52
|
+
If those sets are endowed with more structure, say they are
|
|
53
|
+
monoids (hence in the category ``Monoids()``), then the result is
|
|
54
|
+
automatically endowed with its natural monoid structure::
|
|
55
|
+
|
|
56
|
+
sage: M = Monoids().example()
|
|
57
|
+
sage: M
|
|
58
|
+
An example of a monoid: the free monoid generated by ('a', 'b', 'c', 'd')
|
|
59
|
+
sage: M.rename('M')
|
|
60
|
+
sage: C = cartesian_product([M, ZZ, QQ])
|
|
61
|
+
sage: C
|
|
62
|
+
The Cartesian product of (M, Integer Ring, Rational Field)
|
|
63
|
+
sage: C.an_element()
|
|
64
|
+
('abcd', 1, 1/2)
|
|
65
|
+
sage: C.an_element()^2
|
|
66
|
+
('abcdabcd', 1, 1/4)
|
|
67
|
+
sage: C.category()
|
|
68
|
+
Category of Cartesian products of monoids
|
|
69
|
+
|
|
70
|
+
sage: Monoids().CartesianProducts()
|
|
71
|
+
Category of Cartesian products of monoids
|
|
72
|
+
|
|
73
|
+
The Cartesian product functor is covariant: if ``A`` is a
|
|
74
|
+
subcategory of ``B``, then ``A.CartesianProducts()`` is a
|
|
75
|
+
subcategory of ``B.CartesianProducts()`` (see also
|
|
76
|
+
:class:`~sage.categories.covariant_functorial_construction.CovariantFunctorialConstruction`)::
|
|
77
|
+
|
|
78
|
+
sage: C.categories()
|
|
79
|
+
[Category of Cartesian products of monoids,
|
|
80
|
+
Category of monoids,
|
|
81
|
+
Category of Cartesian products of semigroups,
|
|
82
|
+
Category of semigroups,
|
|
83
|
+
Category of Cartesian products of unital magmas,
|
|
84
|
+
Category of Cartesian products of magmas,
|
|
85
|
+
Category of unital magmas,
|
|
86
|
+
Category of magmas,
|
|
87
|
+
Category of Cartesian products of sets,
|
|
88
|
+
Category of sets, ...]
|
|
89
|
+
|
|
90
|
+
[Category of Cartesian products of monoids,
|
|
91
|
+
Category of monoids,
|
|
92
|
+
Category of Cartesian products of semigroups,
|
|
93
|
+
Category of semigroups,
|
|
94
|
+
Category of Cartesian products of magmas,
|
|
95
|
+
Category of unital magmas,
|
|
96
|
+
Category of magmas,
|
|
97
|
+
Category of Cartesian products of sets,
|
|
98
|
+
Category of sets,
|
|
99
|
+
Category of sets with partial maps,
|
|
100
|
+
Category of objects]
|
|
101
|
+
|
|
102
|
+
Hence, the role of ``Monoids().CartesianProducts()`` is solely to
|
|
103
|
+
provide mathematical information and algorithms which are relevant
|
|
104
|
+
to Cartesian product of monoids. For example, it specifies that
|
|
105
|
+
the result is again a monoid, and that its multiplicative unit is
|
|
106
|
+
the Cartesian product of the units of the underlying sets::
|
|
107
|
+
|
|
108
|
+
sage: C.one()
|
|
109
|
+
('', 1, 1)
|
|
110
|
+
|
|
111
|
+
Those are implemented in the nested class
|
|
112
|
+
:class:`Monoids.CartesianProducts
|
|
113
|
+
<sage.categories.monoids.Monoids.CartesianProducts>` of
|
|
114
|
+
``Monoids(QQ)``. This nested class is itself a subclass of
|
|
115
|
+
:class:`CartesianProductsCategory`.
|
|
116
|
+
"""
|
|
117
|
+
_functor_name = "cartesian_product"
|
|
118
|
+
_functor_category = "CartesianProducts"
|
|
119
|
+
symbol = " (+) "
|
|
120
|
+
|
|
121
|
+
def __init__(self, category=None):
|
|
122
|
+
r"""
|
|
123
|
+
Constructor. See :class:`CartesianProductFunctor` for details.
|
|
124
|
+
|
|
125
|
+
TESTS::
|
|
126
|
+
|
|
127
|
+
sage: from sage.categories.cartesian_product import CartesianProductFunctor
|
|
128
|
+
sage: CartesianProductFunctor()
|
|
129
|
+
The cartesian_product functorial construction
|
|
130
|
+
"""
|
|
131
|
+
CovariantFunctorialConstruction.__init__(self)
|
|
132
|
+
self._forced_category = category
|
|
133
|
+
from sage.categories.sets_cat import Sets
|
|
134
|
+
if self._forced_category is not None:
|
|
135
|
+
codomain = self._forced_category
|
|
136
|
+
else:
|
|
137
|
+
codomain = Sets()
|
|
138
|
+
MultivariateConstructionFunctor.__init__(self, Sets(), codomain)
|
|
139
|
+
|
|
140
|
+
def __call__(self, args, **kwds):
|
|
141
|
+
r"""
|
|
142
|
+
Functorial construction application.
|
|
143
|
+
|
|
144
|
+
This specializes the generic ``__call__`` from
|
|
145
|
+
:class:`CovariantFunctorialConstruction` to:
|
|
146
|
+
|
|
147
|
+
- handle the following plain Python containers as input:
|
|
148
|
+
:class:`frozenset`, :class:`list`, :class:`set`,
|
|
149
|
+
:class:`tuple`, and :class:`xrange` (Python3 ``range``).
|
|
150
|
+
|
|
151
|
+
- handle the empty list of factors.
|
|
152
|
+
|
|
153
|
+
See the examples below.
|
|
154
|
+
|
|
155
|
+
EXAMPLES::
|
|
156
|
+
|
|
157
|
+
sage: cartesian_product([[0,1], ('a','b','c')])
|
|
158
|
+
The Cartesian product of ({0, 1}, {'a', 'b', 'c'})
|
|
159
|
+
sage: _.category()
|
|
160
|
+
Category of Cartesian products of finite enumerated sets
|
|
161
|
+
|
|
162
|
+
sage: cartesian_product([set([0,1,2]), [0,1]])
|
|
163
|
+
The Cartesian product of ({0, 1, 2}, {0, 1})
|
|
164
|
+
sage: _.category()
|
|
165
|
+
Category of Cartesian products of finite enumerated sets
|
|
166
|
+
|
|
167
|
+
Check that the empty product is handled correctly::
|
|
168
|
+
|
|
169
|
+
sage: C = cartesian_product([])
|
|
170
|
+
sage: C
|
|
171
|
+
The Cartesian product of ()
|
|
172
|
+
sage: C.cardinality()
|
|
173
|
+
1
|
|
174
|
+
sage: C.an_element()
|
|
175
|
+
()
|
|
176
|
+
sage: C.category()
|
|
177
|
+
Category of Cartesian products of sets
|
|
178
|
+
|
|
179
|
+
Check that Python3 ``range`` is handled correctly::
|
|
180
|
+
|
|
181
|
+
sage: C = cartesian_product([range(2), range(2)])
|
|
182
|
+
sage: list(C)
|
|
183
|
+
[(0, 0), (0, 1), (1, 0), (1, 1)]
|
|
184
|
+
sage: C.category()
|
|
185
|
+
Category of Cartesian products of finite enumerated sets
|
|
186
|
+
"""
|
|
187
|
+
if any(type(arg) in native_python_containers for arg in args):
|
|
188
|
+
from sage.categories.sets_cat import Sets
|
|
189
|
+
S = Sets()
|
|
190
|
+
args = [S(a, enumerated_set=True) for a in args]
|
|
191
|
+
elif not args:
|
|
192
|
+
if self._forced_category is None:
|
|
193
|
+
from sage.categories.sets_cat import Sets
|
|
194
|
+
cat = Sets().CartesianProducts()
|
|
195
|
+
else:
|
|
196
|
+
cat = self._forced_category
|
|
197
|
+
from sage.sets.cartesian_product import CartesianProduct
|
|
198
|
+
return CartesianProduct((), cat)
|
|
199
|
+
elif self._forced_category is not None:
|
|
200
|
+
return super().__call__(args, category=self._forced_category, **kwds)
|
|
201
|
+
|
|
202
|
+
return super().__call__(args, **kwds)
|
|
203
|
+
|
|
204
|
+
def __eq__(self, other):
|
|
205
|
+
r"""
|
|
206
|
+
Comparison ignores the ``category`` parameter.
|
|
207
|
+
|
|
208
|
+
TESTS::
|
|
209
|
+
|
|
210
|
+
sage: from sage.categories.cartesian_product import CartesianProductFunctor
|
|
211
|
+
sage: cartesian_product([ZZ, ZZ]).construction()[0] == CartesianProductFunctor()
|
|
212
|
+
True
|
|
213
|
+
"""
|
|
214
|
+
return isinstance(other, CartesianProductFunctor)
|
|
215
|
+
|
|
216
|
+
def __ne__(self, other):
|
|
217
|
+
r"""
|
|
218
|
+
Comparison ignores the ``category`` parameter.
|
|
219
|
+
|
|
220
|
+
TESTS::
|
|
221
|
+
|
|
222
|
+
sage: from sage.categories.cartesian_product import CartesianProductFunctor
|
|
223
|
+
sage: cartesian_product([ZZ, ZZ]).construction()[0] != CartesianProductFunctor()
|
|
224
|
+
False
|
|
225
|
+
"""
|
|
226
|
+
return not (self == other)
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
class CartesianProductsCategory(CovariantConstructionCategory):
|
|
230
|
+
r"""
|
|
231
|
+
An abstract base class for all ``CartesianProducts`` categories.
|
|
232
|
+
|
|
233
|
+
TESTS::
|
|
234
|
+
|
|
235
|
+
sage: C = Sets().CartesianProducts()
|
|
236
|
+
sage: C
|
|
237
|
+
Category of Cartesian products of sets
|
|
238
|
+
sage: C.base_category()
|
|
239
|
+
Category of sets
|
|
240
|
+
sage: latex(C)
|
|
241
|
+
\mathbf{CartesianProducts}(\mathbf{Sets})
|
|
242
|
+
"""
|
|
243
|
+
|
|
244
|
+
_functor_category = "CartesianProducts"
|
|
245
|
+
|
|
246
|
+
def _repr_object_names(self):
|
|
247
|
+
"""
|
|
248
|
+
EXAMPLES::
|
|
249
|
+
|
|
250
|
+
sage: ModulesWithBasis(QQ).CartesianProducts() # indirect doctest
|
|
251
|
+
Category of Cartesian products of vector spaces with basis over Rational Field
|
|
252
|
+
"""
|
|
253
|
+
# This method is only required for the capital `C`
|
|
254
|
+
return "Cartesian products of %s" % (self.base_category()._repr_object_names())
|
|
255
|
+
|
|
256
|
+
def CartesianProducts(self) -> Self:
|
|
257
|
+
"""
|
|
258
|
+
Return the category of (finite) Cartesian products of objects
|
|
259
|
+
of ``self``.
|
|
260
|
+
|
|
261
|
+
By associativity of Cartesian products, this is ``self`` (a Cartesian
|
|
262
|
+
product of Cartesian products of `A`'s is a Cartesian product of
|
|
263
|
+
`A`'s).
|
|
264
|
+
|
|
265
|
+
EXAMPLES::
|
|
266
|
+
|
|
267
|
+
sage: ModulesWithBasis(QQ).CartesianProducts().CartesianProducts()
|
|
268
|
+
Category of Cartesian products of vector spaces with basis over Rational Field
|
|
269
|
+
"""
|
|
270
|
+
return self
|
|
271
|
+
|
|
272
|
+
def base_ring(self):
|
|
273
|
+
"""
|
|
274
|
+
The base ring of a Cartesian product is the base ring of the underlying category.
|
|
275
|
+
|
|
276
|
+
EXAMPLES::
|
|
277
|
+
|
|
278
|
+
sage: Algebras(ZZ).CartesianProducts().base_ring()
|
|
279
|
+
Integer Ring
|
|
280
|
+
"""
|
|
281
|
+
return self.base_category().base_ring()
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
# Moved to avoid circular imports
|
|
285
|
+
lazy_import('sage.categories.sets_cat', 'cartesian_product')
|
|
286
|
+
"""
|
|
287
|
+
The Cartesian product functorial construction
|
|
288
|
+
|
|
289
|
+
See :class:`CartesianProductFunctor` for more information
|
|
290
|
+
|
|
291
|
+
EXAMPLES::
|
|
292
|
+
|
|
293
|
+
sage: cartesian_product
|
|
294
|
+
The cartesian_product functorial construction
|
|
295
|
+
"""
|