passagemath-categories 10.6.32__cp314-cp314t-musllinux_1_2_aarch64.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_categories-10.6.32.dist-info/METADATA +156 -0
- passagemath_categories-10.6.32.dist-info/RECORD +719 -0
- passagemath_categories-10.6.32.dist-info/WHEEL +5 -0
- passagemath_categories-10.6.32.dist-info/top_level.txt +2 -0
- passagemath_categories.libs/libgcc_s-2d945d6c.so.1 +0 -0
- passagemath_categories.libs/libgmp-28992bcb.so.10.5.0 +0 -0
- passagemath_categories.libs/libstdc++-85f2cd6d.so.6.0.33 +0 -0
- sage/all__sagemath_categories.py +28 -0
- sage/arith/all.py +38 -0
- sage/arith/constants.pxd +27 -0
- sage/arith/functions.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/arith/functions.pxd +4 -0
- sage/arith/functions.pyx +221 -0
- sage/arith/misc.py +6552 -0
- sage/arith/multi_modular.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/arith/multi_modular.pxd +39 -0
- sage/arith/multi_modular.pyx +994 -0
- sage/arith/rational_reconstruction.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/arith/rational_reconstruction.pxd +4 -0
- sage/arith/rational_reconstruction.pyx +115 -0
- sage/arith/srange.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/arith/srange.pyx +571 -0
- sage/calculus/all__sagemath_categories.py +2 -0
- sage/calculus/functional.py +481 -0
- sage/calculus/functions.py +151 -0
- sage/categories/additive_groups.py +73 -0
- sage/categories/additive_magmas.py +1044 -0
- sage/categories/additive_monoids.py +114 -0
- sage/categories/additive_semigroups.py +184 -0
- sage/categories/affine_weyl_groups.py +238 -0
- sage/categories/algebra_ideals.py +95 -0
- sage/categories/algebra_modules.py +96 -0
- sage/categories/algebras.py +349 -0
- sage/categories/algebras_with_basis.py +377 -0
- sage/categories/all.py +160 -0
- sage/categories/aperiodic_semigroups.py +29 -0
- sage/categories/associative_algebras.py +47 -0
- sage/categories/bialgebras.py +101 -0
- sage/categories/bialgebras_with_basis.py +414 -0
- sage/categories/bimodules.py +206 -0
- sage/categories/chain_complexes.py +268 -0
- sage/categories/classical_crystals.py +480 -0
- sage/categories/coalgebras.py +405 -0
- sage/categories/coalgebras_with_basis.py +232 -0
- sage/categories/coercion_methods.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/categories/coercion_methods.pyx +52 -0
- sage/categories/commutative_additive_groups.py +104 -0
- sage/categories/commutative_additive_monoids.py +45 -0
- sage/categories/commutative_additive_semigroups.py +48 -0
- sage/categories/commutative_algebra_ideals.py +87 -0
- sage/categories/commutative_algebras.py +94 -0
- sage/categories/commutative_ring_ideals.py +58 -0
- sage/categories/commutative_rings.py +736 -0
- sage/categories/complete_discrete_valuation.py +293 -0
- sage/categories/complex_reflection_groups.py +145 -0
- sage/categories/complex_reflection_or_generalized_coxeter_groups.py +1249 -0
- sage/categories/coxeter_group_algebras.py +186 -0
- sage/categories/coxeter_groups.py +3402 -0
- sage/categories/crystals.py +2628 -0
- sage/categories/cw_complexes.py +216 -0
- sage/categories/dedekind_domains.py +137 -0
- sage/categories/discrete_valuation.py +325 -0
- sage/categories/distributive_magmas_and_additive_magmas.py +100 -0
- sage/categories/division_rings.py +114 -0
- sage/categories/domains.py +95 -0
- sage/categories/drinfeld_modules.py +789 -0
- sage/categories/dual.py +42 -0
- sage/categories/enumerated_sets.py +1146 -0
- sage/categories/euclidean_domains.py +271 -0
- sage/categories/examples/algebras_with_basis.py +102 -0
- sage/categories/examples/all.py +1 -0
- sage/categories/examples/commutative_additive_monoids.py +130 -0
- sage/categories/examples/commutative_additive_semigroups.py +199 -0
- sage/categories/examples/coxeter_groups.py +8 -0
- sage/categories/examples/crystals.py +236 -0
- sage/categories/examples/cw_complexes.py +163 -0
- sage/categories/examples/facade_sets.py +187 -0
- sage/categories/examples/filtered_algebras_with_basis.py +204 -0
- sage/categories/examples/filtered_modules_with_basis.py +154 -0
- sage/categories/examples/finite_coxeter_groups.py +252 -0
- sage/categories/examples/finite_dimensional_algebras_with_basis.py +148 -0
- sage/categories/examples/finite_dimensional_lie_algebras_with_basis.py +495 -0
- sage/categories/examples/finite_enumerated_sets.py +208 -0
- sage/categories/examples/finite_monoids.py +150 -0
- sage/categories/examples/finite_semigroups.py +190 -0
- sage/categories/examples/finite_weyl_groups.py +191 -0
- sage/categories/examples/graded_connected_hopf_algebras_with_basis.py +152 -0
- sage/categories/examples/graded_modules_with_basis.py +168 -0
- sage/categories/examples/graphs.py +122 -0
- sage/categories/examples/hopf_algebras_with_basis.py +145 -0
- sage/categories/examples/infinite_enumerated_sets.py +190 -0
- sage/categories/examples/lie_algebras.py +352 -0
- sage/categories/examples/lie_algebras_with_basis.py +196 -0
- sage/categories/examples/magmas.py +162 -0
- sage/categories/examples/manifolds.py +94 -0
- sage/categories/examples/monoids.py +144 -0
- sage/categories/examples/posets.py +178 -0
- sage/categories/examples/semigroups.py +580 -0
- sage/categories/examples/semigroups_cython.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/categories/examples/semigroups_cython.pyx +221 -0
- sage/categories/examples/semirings.py +249 -0
- sage/categories/examples/sets_cat.py +706 -0
- sage/categories/examples/sets_with_grading.py +101 -0
- sage/categories/examples/with_realizations.py +542 -0
- sage/categories/fields.py +991 -0
- sage/categories/filtered_algebras.py +63 -0
- sage/categories/filtered_algebras_with_basis.py +548 -0
- sage/categories/filtered_hopf_algebras_with_basis.py +138 -0
- sage/categories/filtered_modules.py +210 -0
- sage/categories/filtered_modules_with_basis.py +1209 -0
- sage/categories/finite_complex_reflection_groups.py +1506 -0
- sage/categories/finite_coxeter_groups.py +1138 -0
- sage/categories/finite_crystals.py +103 -0
- sage/categories/finite_dimensional_algebras_with_basis.py +1860 -0
- sage/categories/finite_dimensional_bialgebras_with_basis.py +33 -0
- sage/categories/finite_dimensional_coalgebras_with_basis.py +33 -0
- sage/categories/finite_dimensional_graded_lie_algebras_with_basis.py +231 -0
- sage/categories/finite_dimensional_hopf_algebras_with_basis.py +38 -0
- sage/categories/finite_dimensional_lie_algebras_with_basis.py +2774 -0
- sage/categories/finite_dimensional_modules_with_basis.py +1407 -0
- sage/categories/finite_dimensional_nilpotent_lie_algebras_with_basis.py +167 -0
- sage/categories/finite_dimensional_semisimple_algebras_with_basis.py +270 -0
- sage/categories/finite_enumerated_sets.py +769 -0
- sage/categories/finite_fields.py +252 -0
- sage/categories/finite_groups.py +256 -0
- sage/categories/finite_lattice_posets.py +242 -0
- sage/categories/finite_monoids.py +316 -0
- sage/categories/finite_permutation_groups.py +339 -0
- sage/categories/finite_posets.py +1994 -0
- sage/categories/finite_semigroups.py +136 -0
- sage/categories/finite_sets.py +93 -0
- sage/categories/finite_weyl_groups.py +39 -0
- sage/categories/finitely_generated_lambda_bracket_algebras.py +112 -0
- sage/categories/finitely_generated_lie_conformal_algebras.py +114 -0
- sage/categories/finitely_generated_magmas.py +57 -0
- sage/categories/finitely_generated_semigroups.py +214 -0
- sage/categories/function_fields.py +76 -0
- sage/categories/g_sets.py +77 -0
- sage/categories/gcd_domains.py +65 -0
- sage/categories/generalized_coxeter_groups.py +94 -0
- sage/categories/graded_algebras.py +85 -0
- sage/categories/graded_algebras_with_basis.py +258 -0
- sage/categories/graded_bialgebras.py +32 -0
- sage/categories/graded_bialgebras_with_basis.py +32 -0
- sage/categories/graded_coalgebras.py +65 -0
- sage/categories/graded_coalgebras_with_basis.py +51 -0
- sage/categories/graded_hopf_algebras.py +41 -0
- sage/categories/graded_hopf_algebras_with_basis.py +169 -0
- sage/categories/graded_lie_algebras.py +91 -0
- sage/categories/graded_lie_algebras_with_basis.py +44 -0
- sage/categories/graded_lie_conformal_algebras.py +74 -0
- sage/categories/graded_modules.py +133 -0
- sage/categories/graded_modules_with_basis.py +329 -0
- sage/categories/graphs.py +138 -0
- sage/categories/group_algebras.py +430 -0
- sage/categories/groupoid.py +94 -0
- sage/categories/groups.py +667 -0
- sage/categories/h_trivial_semigroups.py +64 -0
- sage/categories/hecke_modules.py +185 -0
- sage/categories/highest_weight_crystals.py +980 -0
- sage/categories/hopf_algebras.py +219 -0
- sage/categories/hopf_algebras_with_basis.py +309 -0
- sage/categories/infinite_enumerated_sets.py +115 -0
- sage/categories/integral_domains.py +203 -0
- sage/categories/j_trivial_semigroups.py +29 -0
- sage/categories/kac_moody_algebras.py +82 -0
- sage/categories/kahler_algebras.py +203 -0
- sage/categories/l_trivial_semigroups.py +63 -0
- sage/categories/lambda_bracket_algebras.py +280 -0
- sage/categories/lambda_bracket_algebras_with_basis.py +107 -0
- sage/categories/lattice_posets.py +89 -0
- sage/categories/left_modules.py +49 -0
- sage/categories/lie_algebras.py +1070 -0
- sage/categories/lie_algebras_with_basis.py +261 -0
- sage/categories/lie_conformal_algebras.py +350 -0
- sage/categories/lie_conformal_algebras_with_basis.py +147 -0
- sage/categories/lie_groups.py +73 -0
- sage/categories/loop_crystals.py +1290 -0
- sage/categories/magmas.py +1189 -0
- sage/categories/magmas_and_additive_magmas.py +149 -0
- sage/categories/magmatic_algebras.py +365 -0
- sage/categories/manifolds.py +352 -0
- sage/categories/matrix_algebras.py +40 -0
- sage/categories/metric_spaces.py +387 -0
- sage/categories/modular_abelian_varieties.py +78 -0
- sage/categories/modules.py +989 -0
- sage/categories/modules_with_basis.py +2794 -0
- sage/categories/monoid_algebras.py +38 -0
- sage/categories/monoids.py +739 -0
- sage/categories/noetherian_rings.py +87 -0
- sage/categories/number_fields.py +242 -0
- sage/categories/ore_modules.py +189 -0
- sage/categories/partially_ordered_monoids.py +49 -0
- sage/categories/permutation_groups.py +63 -0
- sage/categories/pointed_sets.py +42 -0
- sage/categories/polyhedra.py +74 -0
- sage/categories/poor_man_map.py +270 -0
- sage/categories/posets.py +722 -0
- sage/categories/principal_ideal_domains.py +270 -0
- sage/categories/quantum_group_representations.py +543 -0
- sage/categories/quotient_fields.py +728 -0
- sage/categories/r_trivial_semigroups.py +45 -0
- sage/categories/regular_crystals.py +898 -0
- sage/categories/regular_supercrystals.py +170 -0
- sage/categories/right_modules.py +49 -0
- sage/categories/ring_ideals.py +74 -0
- sage/categories/rings.py +1904 -0
- sage/categories/rngs.py +175 -0
- sage/categories/schemes.py +393 -0
- sage/categories/semigroups.py +1060 -0
- sage/categories/semirings.py +71 -0
- sage/categories/semisimple_algebras.py +114 -0
- sage/categories/sets_with_grading.py +235 -0
- sage/categories/shephard_groups.py +43 -0
- sage/categories/signed_tensor.py +120 -0
- sage/categories/simplicial_complexes.py +134 -0
- sage/categories/simplicial_sets.py +1206 -0
- sage/categories/super_algebras.py +149 -0
- sage/categories/super_algebras_with_basis.py +144 -0
- sage/categories/super_hopf_algebras_with_basis.py +126 -0
- sage/categories/super_lie_conformal_algebras.py +193 -0
- sage/categories/super_modules.py +229 -0
- sage/categories/super_modules_with_basis.py +193 -0
- sage/categories/supercommutative_algebras.py +99 -0
- sage/categories/supercrystals.py +406 -0
- sage/categories/tensor.py +110 -0
- sage/categories/topological_spaces.py +170 -0
- sage/categories/triangular_kac_moody_algebras.py +439 -0
- sage/categories/tutorial.py +58 -0
- sage/categories/unique_factorization_domains.py +318 -0
- sage/categories/unital_algebras.py +426 -0
- sage/categories/vector_bundles.py +159 -0
- sage/categories/vector_spaces.py +357 -0
- sage/categories/weyl_groups.py +853 -0
- sage/combinat/all__sagemath_categories.py +34 -0
- sage/combinat/backtrack.py +180 -0
- sage/combinat/combinat.py +2269 -0
- sage/combinat/combinat_cython.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/combinat/combinat_cython.pxd +6 -0
- sage/combinat/combinat_cython.pyx +390 -0
- sage/combinat/combination.py +796 -0
- sage/combinat/combinatorial_map.py +416 -0
- sage/combinat/composition.py +2192 -0
- sage/combinat/dlx.py +510 -0
- sage/combinat/integer_lists/__init__.py +7 -0
- sage/combinat/integer_lists/base.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/combinat/integer_lists/base.pxd +16 -0
- sage/combinat/integer_lists/base.pyx +713 -0
- sage/combinat/integer_lists/invlex.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/combinat/integer_lists/invlex.pxd +4 -0
- sage/combinat/integer_lists/invlex.pyx +1650 -0
- sage/combinat/integer_lists/lists.py +328 -0
- sage/combinat/integer_lists/nn.py +48 -0
- sage/combinat/integer_vector.py +1818 -0
- sage/combinat/integer_vector_weighted.py +413 -0
- sage/combinat/matrices/all__sagemath_categories.py +5 -0
- sage/combinat/matrices/dancing_links.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/combinat/matrices/dancing_links.pyx +1159 -0
- sage/combinat/matrices/dancing_links_c.h +380 -0
- sage/combinat/matrices/dlxcpp.py +136 -0
- sage/combinat/partition.py +10070 -0
- sage/combinat/partitions.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/combinat/partitions.pyx +743 -0
- sage/combinat/permutation.py +10168 -0
- sage/combinat/permutation_cython.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/combinat/permutation_cython.pxd +11 -0
- sage/combinat/permutation_cython.pyx +407 -0
- sage/combinat/q_analogues.py +1090 -0
- sage/combinat/ranker.py +268 -0
- sage/combinat/subset.py +1561 -0
- sage/combinat/subsets_hereditary.py +202 -0
- sage/combinat/subsets_pairwise.py +184 -0
- sage/combinat/tools.py +63 -0
- sage/combinat/tuple.py +348 -0
- sage/data_structures/all.py +2 -0
- sage/data_structures/all__sagemath_categories.py +2 -0
- sage/data_structures/binary_matrix.pxd +138 -0
- sage/data_structures/binary_search.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/data_structures/binary_search.pxd +3 -0
- sage/data_structures/binary_search.pyx +66 -0
- sage/data_structures/bitset.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/data_structures/bitset.pxd +40 -0
- sage/data_structures/bitset.pyx +2385 -0
- sage/data_structures/bitset_base.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/data_structures/bitset_base.pxd +926 -0
- sage/data_structures/bitset_base.pyx +117 -0
- sage/data_structures/bitset_intrinsics.h +487 -0
- sage/data_structures/blas_dict.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/data_structures/blas_dict.pxd +12 -0
- sage/data_structures/blas_dict.pyx +469 -0
- sage/data_structures/list_of_pairs.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/data_structures/list_of_pairs.pxd +16 -0
- sage/data_structures/list_of_pairs.pyx +122 -0
- sage/data_structures/mutable_poset.py +3312 -0
- sage/data_structures/pairing_heap.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/data_structures/pairing_heap.h +346 -0
- sage/data_structures/pairing_heap.pxd +88 -0
- sage/data_structures/pairing_heap.pyx +1464 -0
- sage/data_structures/sparse_bitset.pxd +62 -0
- sage/data_structures/stream.py +5070 -0
- sage/databases/all__sagemath_categories.py +7 -0
- sage/databases/sql_db.py +2236 -0
- sage/ext/all__sagemath_categories.py +3 -0
- sage/ext/fast_callable.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/ext/fast_callable.pxd +4 -0
- sage/ext/fast_callable.pyx +2746 -0
- sage/ext/fast_eval.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/ext/fast_eval.pxd +1 -0
- sage/ext/fast_eval.pyx +102 -0
- sage/ext/interpreters/__init__.py +1 -0
- sage/ext/interpreters/all__sagemath_categories.py +2 -0
- sage/ext/interpreters/wrapper_el.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/ext/interpreters/wrapper_el.pxd +18 -0
- sage/ext/interpreters/wrapper_el.pyx +148 -0
- sage/ext/interpreters/wrapper_py.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/ext/interpreters/wrapper_py.pxd +17 -0
- sage/ext/interpreters/wrapper_py.pyx +133 -0
- sage/functions/airy.py +937 -0
- sage/functions/all.py +97 -0
- sage/functions/bessel.py +2102 -0
- sage/functions/error.py +784 -0
- sage/functions/exp_integral.py +1529 -0
- sage/functions/gamma.py +1087 -0
- sage/functions/generalized.py +672 -0
- sage/functions/hyperbolic.py +747 -0
- sage/functions/hypergeometric.py +1156 -0
- sage/functions/jacobi.py +1705 -0
- sage/functions/log.py +1402 -0
- sage/functions/min_max.py +338 -0
- sage/functions/orthogonal_polys.py +3106 -0
- sage/functions/other.py +2303 -0
- sage/functions/piecewise.py +1505 -0
- sage/functions/prime_pi.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/functions/prime_pi.pyx +262 -0
- sage/functions/special.py +1212 -0
- sage/functions/spike_function.py +278 -0
- sage/functions/transcendental.py +690 -0
- sage/functions/trig.py +1062 -0
- sage/functions/wigner.py +726 -0
- sage/geometry/abc.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/geometry/abc.pyx +82 -0
- sage/geometry/all__sagemath_categories.py +1 -0
- sage/groups/all__sagemath_categories.py +11 -0
- sage/groups/generic.py +1733 -0
- sage/groups/groups_catalog.py +113 -0
- sage/groups/perm_gps/all__sagemath_categories.py +1 -0
- sage/groups/perm_gps/partn_ref/all.py +1 -0
- sage/groups/perm_gps/partn_ref/all__sagemath_categories.py +1 -0
- sage/groups/perm_gps/partn_ref/automorphism_group_canonical_label.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/groups/perm_gps/partn_ref/automorphism_group_canonical_label.pxd +52 -0
- sage/groups/perm_gps/partn_ref/automorphism_group_canonical_label.pyx +906 -0
- sage/groups/perm_gps/partn_ref/canonical_augmentation.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/groups/perm_gps/partn_ref/canonical_augmentation.pxd +85 -0
- sage/groups/perm_gps/partn_ref/canonical_augmentation.pyx +534 -0
- sage/groups/perm_gps/partn_ref/data_structures.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/groups/perm_gps/partn_ref/data_structures.pxd +576 -0
- sage/groups/perm_gps/partn_ref/data_structures.pyx +1792 -0
- sage/groups/perm_gps/partn_ref/double_coset.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/groups/perm_gps/partn_ref/double_coset.pxd +45 -0
- sage/groups/perm_gps/partn_ref/double_coset.pyx +739 -0
- sage/groups/perm_gps/partn_ref/refinement_lists.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/groups/perm_gps/partn_ref/refinement_lists.pxd +18 -0
- sage/groups/perm_gps/partn_ref/refinement_lists.pyx +82 -0
- sage/groups/perm_gps/partn_ref/refinement_python.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/groups/perm_gps/partn_ref/refinement_python.pxd +16 -0
- sage/groups/perm_gps/partn_ref/refinement_python.pyx +564 -0
- sage/groups/perm_gps/partn_ref/refinement_sets.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/groups/perm_gps/partn_ref/refinement_sets.pxd +60 -0
- sage/groups/perm_gps/partn_ref/refinement_sets.pyx +858 -0
- sage/interfaces/abc.py +140 -0
- sage/interfaces/all.py +58 -0
- sage/interfaces/all__sagemath_categories.py +1 -0
- sage/interfaces/expect.py +1643 -0
- sage/interfaces/interface.py +1682 -0
- sage/interfaces/process.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/interfaces/process.pxd +5 -0
- sage/interfaces/process.pyx +288 -0
- sage/interfaces/quit.py +167 -0
- sage/interfaces/sage0.py +604 -0
- sage/interfaces/sagespawn.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/interfaces/sagespawn.pyx +308 -0
- sage/interfaces/tab_completion.py +101 -0
- sage/misc/all__sagemath_categories.py +78 -0
- sage/misc/allocator.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/misc/allocator.pxd +6 -0
- sage/misc/allocator.pyx +47 -0
- sage/misc/binary_tree.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/misc/binary_tree.pxd +29 -0
- sage/misc/binary_tree.pyx +537 -0
- sage/misc/callable_dict.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/misc/callable_dict.pyx +89 -0
- sage/misc/citation.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/misc/citation.pyx +159 -0
- sage/misc/converting_dict.py +293 -0
- sage/misc/defaults.py +129 -0
- sage/misc/derivative.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/misc/derivative.pyx +223 -0
- sage/misc/functional.py +2005 -0
- sage/misc/html.py +589 -0
- sage/misc/latex.py +2673 -0
- sage/misc/latex_macros.py +236 -0
- sage/misc/latex_standalone.py +1833 -0
- sage/misc/map_threaded.py +38 -0
- sage/misc/mathml.py +76 -0
- sage/misc/method_decorator.py +88 -0
- sage/misc/mrange.py +755 -0
- sage/misc/multireplace.py +41 -0
- sage/misc/object_multiplexer.py +92 -0
- sage/misc/parser.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/misc/parser.pyx +1107 -0
- sage/misc/random_testing.py +264 -0
- sage/misc/rest_index_of_methods.py +377 -0
- sage/misc/search.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/misc/search.pxd +2 -0
- sage/misc/search.pyx +68 -0
- sage/misc/stopgap.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/misc/stopgap.pyx +95 -0
- sage/misc/table.py +853 -0
- sage/monoids/all__sagemath_categories.py +1 -0
- sage/monoids/indexed_free_monoid.py +1071 -0
- sage/monoids/monoid.py +82 -0
- sage/numerical/all__sagemath_categories.py +1 -0
- sage/numerical/backends/all__sagemath_categories.py +1 -0
- sage/numerical/backends/generic_backend.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/numerical/backends/generic_backend.pxd +61 -0
- sage/numerical/backends/generic_backend.pyx +1893 -0
- sage/numerical/backends/generic_sdp_backend.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/numerical/backends/generic_sdp_backend.pxd +38 -0
- sage/numerical/backends/generic_sdp_backend.pyx +755 -0
- sage/parallel/all.py +6 -0
- sage/parallel/decorate.py +575 -0
- sage/parallel/map_reduce.py +1997 -0
- sage/parallel/multiprocessing_sage.py +76 -0
- sage/parallel/ncpus.py +35 -0
- sage/parallel/parallelism.py +364 -0
- sage/parallel/reference.py +47 -0
- sage/parallel/use_fork.py +333 -0
- sage/rings/abc.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/abc.pxd +31 -0
- sage/rings/abc.pyx +526 -0
- sage/rings/algebraic_closure_finite_field.py +1154 -0
- sage/rings/all__sagemath_categories.py +91 -0
- sage/rings/big_oh.py +227 -0
- sage/rings/continued_fraction.py +2754 -0
- sage/rings/continued_fraction_gosper.py +220 -0
- sage/rings/factorint.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/factorint.pyx +295 -0
- sage/rings/fast_arith.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/fast_arith.pxd +21 -0
- sage/rings/fast_arith.pyx +535 -0
- sage/rings/finite_rings/all__sagemath_categories.py +9 -0
- sage/rings/finite_rings/conway_polynomials.py +542 -0
- sage/rings/finite_rings/element_base.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/finite_rings/element_base.pxd +12 -0
- sage/rings/finite_rings/element_base.pyx +1176 -0
- sage/rings/finite_rings/finite_field_base.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/finite_rings/finite_field_base.pxd +7 -0
- sage/rings/finite_rings/finite_field_base.pyx +2171 -0
- sage/rings/finite_rings/finite_field_constructor.py +827 -0
- sage/rings/finite_rings/finite_field_prime_modn.py +372 -0
- sage/rings/finite_rings/galois_group.py +154 -0
- sage/rings/finite_rings/hom_finite_field.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/finite_rings/hom_finite_field.pxd +23 -0
- sage/rings/finite_rings/hom_finite_field.pyx +856 -0
- sage/rings/finite_rings/hom_prime_finite_field.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/finite_rings/hom_prime_finite_field.pxd +15 -0
- sage/rings/finite_rings/hom_prime_finite_field.pyx +164 -0
- sage/rings/finite_rings/homset.py +357 -0
- sage/rings/finite_rings/integer_mod.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/finite_rings/integer_mod.pxd +56 -0
- sage/rings/finite_rings/integer_mod.pyx +4586 -0
- sage/rings/finite_rings/integer_mod_limits.h +11 -0
- sage/rings/finite_rings/integer_mod_ring.py +2044 -0
- sage/rings/finite_rings/residue_field.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/finite_rings/residue_field.pxd +30 -0
- sage/rings/finite_rings/residue_field.pyx +1811 -0
- sage/rings/finite_rings/stdint.pxd +19 -0
- sage/rings/fraction_field.py +1452 -0
- sage/rings/fraction_field_element.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/fraction_field_element.pyx +1357 -0
- sage/rings/function_field/all.py +7 -0
- sage/rings/function_field/all__sagemath_categories.py +2 -0
- sage/rings/function_field/constructor.py +218 -0
- sage/rings/function_field/element.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/function_field/element.pxd +11 -0
- sage/rings/function_field/element.pyx +1008 -0
- sage/rings/function_field/element_rational.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/function_field/element_rational.pyx +513 -0
- sage/rings/function_field/extensions.py +230 -0
- sage/rings/function_field/function_field.py +1468 -0
- sage/rings/function_field/function_field_rational.py +1005 -0
- sage/rings/function_field/ideal.py +1155 -0
- sage/rings/function_field/ideal_rational.py +629 -0
- sage/rings/function_field/jacobian_base.py +826 -0
- sage/rings/function_field/jacobian_hess.py +1053 -0
- sage/rings/function_field/jacobian_khuri_makdisi.py +1027 -0
- sage/rings/function_field/maps.py +1039 -0
- sage/rings/function_field/order.py +281 -0
- sage/rings/function_field/order_basis.py +586 -0
- sage/rings/function_field/order_rational.py +576 -0
- sage/rings/function_field/place.py +426 -0
- sage/rings/function_field/place_rational.py +181 -0
- sage/rings/generic.py +320 -0
- sage/rings/homset.py +332 -0
- sage/rings/ideal.py +1885 -0
- sage/rings/ideal_monoid.py +215 -0
- sage/rings/infinity.py +1890 -0
- sage/rings/integer.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/integer.pxd +45 -0
- sage/rings/integer.pyx +7874 -0
- sage/rings/integer_ring.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/integer_ring.pxd +8 -0
- sage/rings/integer_ring.pyx +1693 -0
- sage/rings/laurent_series_ring.py +931 -0
- sage/rings/laurent_series_ring_element.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/laurent_series_ring_element.pxd +11 -0
- sage/rings/laurent_series_ring_element.pyx +1927 -0
- sage/rings/lazy_series.py +7815 -0
- sage/rings/lazy_series_ring.py +4356 -0
- sage/rings/localization.py +1043 -0
- sage/rings/morphism.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/morphism.pxd +39 -0
- sage/rings/morphism.pyx +3299 -0
- sage/rings/multi_power_series_ring.py +1145 -0
- sage/rings/multi_power_series_ring_element.py +2184 -0
- sage/rings/noncommutative_ideals.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/noncommutative_ideals.pyx +423 -0
- sage/rings/number_field/all__sagemath_categories.py +1 -0
- sage/rings/number_field/number_field_base.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/number_field/number_field_base.pxd +8 -0
- sage/rings/number_field/number_field_base.pyx +507 -0
- sage/rings/number_field/number_field_element_base.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/number_field/number_field_element_base.pxd +6 -0
- sage/rings/number_field/number_field_element_base.pyx +36 -0
- sage/rings/number_field/number_field_ideal.py +3550 -0
- sage/rings/padics/all__sagemath_categories.py +4 -0
- sage/rings/padics/local_generic.py +1670 -0
- sage/rings/padics/local_generic_element.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/padics/local_generic_element.pxd +5 -0
- sage/rings/padics/local_generic_element.pyx +1017 -0
- sage/rings/padics/misc.py +256 -0
- sage/rings/padics/padic_generic.py +1911 -0
- sage/rings/padics/pow_computer.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/padics/pow_computer.pxd +38 -0
- sage/rings/padics/pow_computer.pyx +671 -0
- sage/rings/padics/precision_error.py +24 -0
- sage/rings/polynomial/all__sagemath_categories.py +25 -0
- sage/rings/polynomial/commutative_polynomial.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/commutative_polynomial.pxd +6 -0
- sage/rings/polynomial/commutative_polynomial.pyx +24 -0
- sage/rings/polynomial/cyclotomic.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/cyclotomic.pyx +404 -0
- sage/rings/polynomial/flatten.py +711 -0
- sage/rings/polynomial/ideal.py +102 -0
- sage/rings/polynomial/infinite_polynomial_element.py +1768 -0
- sage/rings/polynomial/infinite_polynomial_ring.py +1653 -0
- sage/rings/polynomial/laurent_polynomial.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/laurent_polynomial.pxd +18 -0
- sage/rings/polynomial/laurent_polynomial.pyx +2190 -0
- sage/rings/polynomial/laurent_polynomial_ideal.py +590 -0
- sage/rings/polynomial/laurent_polynomial_ring.py +832 -0
- sage/rings/polynomial/laurent_polynomial_ring_base.py +708 -0
- sage/rings/polynomial/multi_polynomial.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/multi_polynomial.pxd +12 -0
- sage/rings/polynomial/multi_polynomial.pyx +3082 -0
- sage/rings/polynomial/multi_polynomial_element.py +2570 -0
- sage/rings/polynomial/multi_polynomial_ideal.py +5771 -0
- sage/rings/polynomial/multi_polynomial_ring.py +947 -0
- sage/rings/polynomial/multi_polynomial_ring_base.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/multi_polynomial_ring_base.pxd +15 -0
- sage/rings/polynomial/multi_polynomial_ring_base.pyx +1855 -0
- sage/rings/polynomial/multi_polynomial_sequence.py +2204 -0
- sage/rings/polynomial/polydict.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/polydict.pxd +45 -0
- sage/rings/polynomial/polydict.pyx +2701 -0
- sage/rings/polynomial/polynomial_compiled.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/polynomial_compiled.pxd +59 -0
- sage/rings/polynomial/polynomial_compiled.pyx +509 -0
- sage/rings/polynomial/polynomial_element.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/polynomial_element.pxd +64 -0
- sage/rings/polynomial/polynomial_element.pyx +13255 -0
- sage/rings/polynomial/polynomial_element_generic.py +1637 -0
- sage/rings/polynomial/polynomial_fateman.py +97 -0
- sage/rings/polynomial/polynomial_quotient_ring.py +2465 -0
- sage/rings/polynomial/polynomial_quotient_ring_element.py +779 -0
- sage/rings/polynomial/polynomial_ring.py +3784 -0
- sage/rings/polynomial/polynomial_ring_constructor.py +1051 -0
- sage/rings/polynomial/polynomial_ring_homomorphism.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/polynomial_ring_homomorphism.pxd +5 -0
- sage/rings/polynomial/polynomial_ring_homomorphism.pyx +121 -0
- sage/rings/polynomial/polynomial_singular_interface.py +549 -0
- sage/rings/polynomial/symmetric_ideal.py +989 -0
- sage/rings/polynomial/symmetric_reduction.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/symmetric_reduction.pxd +8 -0
- sage/rings/polynomial/symmetric_reduction.pyx +669 -0
- sage/rings/polynomial/term_order.py +2279 -0
- sage/rings/polynomial/toy_buchberger.py +449 -0
- sage/rings/polynomial/toy_d_basis.py +387 -0
- sage/rings/polynomial/toy_variety.py +362 -0
- sage/rings/power_series_mpoly.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/power_series_mpoly.pxd +9 -0
- sage/rings/power_series_mpoly.pyx +161 -0
- sage/rings/power_series_poly.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/power_series_poly.pxd +10 -0
- sage/rings/power_series_poly.pyx +1317 -0
- sage/rings/power_series_ring.py +1441 -0
- sage/rings/power_series_ring_element.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/power_series_ring_element.pxd +12 -0
- sage/rings/power_series_ring_element.pyx +3028 -0
- sage/rings/puiseux_series_ring.py +487 -0
- sage/rings/puiseux_series_ring_element.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/puiseux_series_ring_element.pxd +7 -0
- sage/rings/puiseux_series_ring_element.pyx +1055 -0
- sage/rings/qqbar_decorators.py +167 -0
- sage/rings/quotient_ring.py +1598 -0
- sage/rings/quotient_ring_element.py +979 -0
- sage/rings/rational.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/rational.pxd +20 -0
- sage/rings/rational.pyx +4284 -0
- sage/rings/rational_field.py +1730 -0
- sage/rings/real_double.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/real_double.pxd +16 -0
- sage/rings/real_double.pyx +2218 -0
- sage/rings/real_lazy.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/real_lazy.pxd +30 -0
- sage/rings/real_lazy.pyx +1773 -0
- sage/rings/ring.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/ring.pxd +30 -0
- sage/rings/ring.pyx +850 -0
- sage/rings/semirings/all.py +3 -0
- sage/rings/semirings/non_negative_integer_semiring.py +107 -0
- sage/rings/semirings/tropical_mpolynomial.py +972 -0
- sage/rings/semirings/tropical_polynomial.py +997 -0
- sage/rings/semirings/tropical_semiring.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/semirings/tropical_semiring.pyx +676 -0
- sage/rings/semirings/tropical_variety.py +1701 -0
- sage/rings/sum_of_squares.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/sum_of_squares.pxd +3 -0
- sage/rings/sum_of_squares.pyx +336 -0
- sage/rings/tests.py +504 -0
- sage/schemes/affine/affine_homset.py +508 -0
- sage/schemes/affine/affine_morphism.py +1574 -0
- sage/schemes/affine/affine_point.py +460 -0
- sage/schemes/affine/affine_rational_point.py +308 -0
- sage/schemes/affine/affine_space.py +1264 -0
- sage/schemes/affine/affine_subscheme.py +592 -0
- sage/schemes/affine/all.py +25 -0
- sage/schemes/all__sagemath_categories.py +5 -0
- sage/schemes/generic/algebraic_scheme.py +2092 -0
- sage/schemes/generic/all.py +5 -0
- sage/schemes/generic/ambient_space.py +400 -0
- sage/schemes/generic/divisor.py +465 -0
- sage/schemes/generic/divisor_group.py +313 -0
- sage/schemes/generic/glue.py +84 -0
- sage/schemes/generic/homset.py +820 -0
- sage/schemes/generic/hypersurface.py +234 -0
- sage/schemes/generic/morphism.py +2107 -0
- sage/schemes/generic/point.py +237 -0
- sage/schemes/generic/scheme.py +1190 -0
- sage/schemes/generic/spec.py +199 -0
- sage/schemes/product_projective/all.py +6 -0
- sage/schemes/product_projective/homset.py +236 -0
- sage/schemes/product_projective/morphism.py +517 -0
- sage/schemes/product_projective/point.py +568 -0
- sage/schemes/product_projective/rational_point.py +550 -0
- sage/schemes/product_projective/space.py +1301 -0
- sage/schemes/product_projective/subscheme.py +466 -0
- sage/schemes/projective/all.py +24 -0
- sage/schemes/projective/proj_bdd_height.py +453 -0
- sage/schemes/projective/projective_homset.py +718 -0
- sage/schemes/projective/projective_morphism.py +2792 -0
- sage/schemes/projective/projective_point.py +1484 -0
- sage/schemes/projective/projective_rational_point.py +569 -0
- sage/schemes/projective/projective_space.py +2571 -0
- sage/schemes/projective/projective_subscheme.py +1574 -0
- sage/sets/all.py +17 -0
- sage/sets/cartesian_product.py +376 -0
- sage/sets/condition_set.py +525 -0
- sage/sets/disjoint_set.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/sets/disjoint_set.pxd +36 -0
- sage/sets/disjoint_set.pyx +998 -0
- sage/sets/disjoint_union_enumerated_sets.py +625 -0
- sage/sets/family.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/sets/family.pxd +12 -0
- sage/sets/family.pyx +1556 -0
- sage/sets/finite_enumerated_set.py +406 -0
- sage/sets/finite_set_map_cy.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/sets/finite_set_map_cy.pxd +34 -0
- sage/sets/finite_set_map_cy.pyx +708 -0
- sage/sets/finite_set_maps.py +591 -0
- sage/sets/image_set.py +448 -0
- sage/sets/integer_range.py +829 -0
- sage/sets/non_negative_integers.py +241 -0
- sage/sets/positive_integers.py +93 -0
- sage/sets/primes.py +188 -0
- sage/sets/real_set.py +2760 -0
- sage/sets/recursively_enumerated_set.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/sets/recursively_enumerated_set.pxd +31 -0
- sage/sets/recursively_enumerated_set.pyx +2082 -0
- sage/sets/set.py +2083 -0
- sage/sets/set_from_iterator.py +1021 -0
- sage/sets/totally_ordered_finite_set.py +329 -0
- sage/symbolic/all__sagemath_categories.py +1 -0
- sage/symbolic/function.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/symbolic/function.pxd +29 -0
- sage/symbolic/function.pyx +1488 -0
- sage/symbolic/symbols.py +56 -0
- sage/tests/all__sagemath_categories.py +1 -0
- sage/tests/cython.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/tests/cython.pyx +37 -0
- sage/tests/stl_vector.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/tests/stl_vector.pyx +171 -0
- sage/typeset/all.py +6 -0
- sage/typeset/ascii_art.py +295 -0
- sage/typeset/character_art.py +789 -0
- sage/typeset/character_art_factory.py +572 -0
- sage/typeset/symbols.py +334 -0
- sage/typeset/unicode_art.py +183 -0
- sage/typeset/unicode_characters.py +101 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Semirings
|
|
4
|
+
"""
|
|
5
|
+
# ****************************************************************************
|
|
6
|
+
# Copyright (C) 2010 Nicolas Borie <nicolas.borie@math.u-psud.fr>
|
|
7
|
+
#
|
|
8
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
9
|
+
# https://www.gnu.org/licenses/
|
|
10
|
+
# *****************************************************************************
|
|
11
|
+
|
|
12
|
+
from sage.categories.category_with_axiom import CategoryWithAxiom
|
|
13
|
+
from sage.categories.magmas_and_additive_magmas import MagmasAndAdditiveMagmas
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class Semirings(CategoryWithAxiom):
|
|
17
|
+
"""
|
|
18
|
+
The category of semirings.
|
|
19
|
+
|
|
20
|
+
A semiring `(S, +, *)` is similar to a ring, but without the
|
|
21
|
+
requirement that each element must have an additive inverse. In
|
|
22
|
+
other words, it is a combination of a commutative additive monoid
|
|
23
|
+
`(S, +)` and a multiplicative monoid `(S, *)`, where `*` distributes
|
|
24
|
+
over `+`.
|
|
25
|
+
|
|
26
|
+
.. SEEALSO::
|
|
27
|
+
|
|
28
|
+
:wikipedia:`Semiring`
|
|
29
|
+
|
|
30
|
+
EXAMPLES::
|
|
31
|
+
|
|
32
|
+
sage: Semirings()
|
|
33
|
+
Category of semirings
|
|
34
|
+
sage: Semirings().super_categories()
|
|
35
|
+
[Category of associative additive commutative additive
|
|
36
|
+
associative additive unital distributive magmas and additive magmas,
|
|
37
|
+
Category of monoids]
|
|
38
|
+
|
|
39
|
+
sage: sorted(Semirings().axioms())
|
|
40
|
+
['AdditiveAssociative', 'AdditiveCommutative', 'AdditiveUnital',
|
|
41
|
+
'Associative', 'Distributive', 'Unital']
|
|
42
|
+
|
|
43
|
+
sage: Semirings() is (CommutativeAdditiveMonoids() & Monoids()).Distributive()
|
|
44
|
+
True
|
|
45
|
+
|
|
46
|
+
sage: Semirings().AdditiveInverse()
|
|
47
|
+
Category of rings
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
TESTS::
|
|
51
|
+
|
|
52
|
+
sage: TestSuite(Semirings()).run()
|
|
53
|
+
sage: Semirings().example()
|
|
54
|
+
An example of a semiring: the ternary-logic semiring
|
|
55
|
+
"""
|
|
56
|
+
_base_category_class_and_axiom = (MagmasAndAdditiveMagmas.Distributive.AdditiveAssociative.AdditiveCommutative.AdditiveUnital.Associative, "Unital")
|
|
57
|
+
|
|
58
|
+
def __lean_init__(self):
|
|
59
|
+
r"""
|
|
60
|
+
Return the category as Lean mathlib input for a typeclass.
|
|
61
|
+
|
|
62
|
+
EXAMPLES::
|
|
63
|
+
|
|
64
|
+
sage: from sage.categories.semirings import Semirings
|
|
65
|
+
sage: C = Semirings(); C
|
|
66
|
+
Category of semirings
|
|
67
|
+
sage: C.__lean_init__()
|
|
68
|
+
'semiring'
|
|
69
|
+
"""
|
|
70
|
+
# defined in algebra.ring.basic
|
|
71
|
+
return 'semiring'
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Semisimple Algebras
|
|
4
|
+
"""
|
|
5
|
+
#*****************************************************************************
|
|
6
|
+
# Copyright (C) 2011-2015 Nicolas M. Thiery <nthiery at users.sf.net>
|
|
7
|
+
#
|
|
8
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
9
|
+
# http://www.gnu.org/licenses/
|
|
10
|
+
#******************************************************************************
|
|
11
|
+
|
|
12
|
+
from sage.categories.algebras import Algebras
|
|
13
|
+
from sage.categories.category_types import Category_over_base_ring
|
|
14
|
+
from sage.categories.category_with_axiom import CategoryWithAxiom_over_base_ring
|
|
15
|
+
from sage.misc.bindable_class import BoundClass
|
|
16
|
+
from sage.misc.cachefunc import cached_method
|
|
17
|
+
from sage.misc.lazy_import import LazyImport
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class SemisimpleAlgebras(Category_over_base_ring):
|
|
21
|
+
"""
|
|
22
|
+
The category of semisimple algebras over a given base ring.
|
|
23
|
+
|
|
24
|
+
EXAMPLES::
|
|
25
|
+
|
|
26
|
+
sage: from sage.categories.semisimple_algebras import SemisimpleAlgebras
|
|
27
|
+
sage: C = SemisimpleAlgebras(QQ); C
|
|
28
|
+
Category of semisimple algebras over Rational Field
|
|
29
|
+
|
|
30
|
+
This category is best constructed as::
|
|
31
|
+
|
|
32
|
+
sage: D = Algebras(QQ).Semisimple(); D
|
|
33
|
+
Category of semisimple algebras over Rational Field
|
|
34
|
+
sage: D is C
|
|
35
|
+
True
|
|
36
|
+
|
|
37
|
+
sage: C.super_categories()
|
|
38
|
+
[Category of algebras over Rational Field]
|
|
39
|
+
|
|
40
|
+
Typically, finite group algebras are semisimple::
|
|
41
|
+
|
|
42
|
+
sage: DihedralGroup(5).algebra(QQ) in SemisimpleAlgebras # needs sage.groups sage.modules
|
|
43
|
+
True
|
|
44
|
+
|
|
45
|
+
Unless the characteristic of the field divides the order of the group::
|
|
46
|
+
|
|
47
|
+
sage: DihedralGroup(5).algebra(IntegerModRing(5)) in SemisimpleAlgebras # needs sage.groups sage.modules
|
|
48
|
+
False
|
|
49
|
+
|
|
50
|
+
sage: DihedralGroup(5).algebra(IntegerModRing(7)) in SemisimpleAlgebras # needs sage.groups sage.modules
|
|
51
|
+
True
|
|
52
|
+
|
|
53
|
+
.. SEEALSO:: :wikipedia:`Semisimple_algebra`
|
|
54
|
+
|
|
55
|
+
TESTS::
|
|
56
|
+
|
|
57
|
+
sage: TestSuite(C).run()
|
|
58
|
+
"""
|
|
59
|
+
@staticmethod
|
|
60
|
+
def __classget__(cls, base_category, base_category_class):
|
|
61
|
+
"""
|
|
62
|
+
Implement the shorthand ``Algebras(K).Semisimple()`` for ``SemisimpleAlgebras(K)``.
|
|
63
|
+
|
|
64
|
+
This magic mimics the syntax of axioms for a smooth transition
|
|
65
|
+
if ``Semisimple`` becomes one.
|
|
66
|
+
|
|
67
|
+
EXAMPLES::
|
|
68
|
+
|
|
69
|
+
sage: Algebras(QQ).Semisimple()
|
|
70
|
+
Category of semisimple algebras over Rational Field
|
|
71
|
+
sage: Algebras.Semisimple
|
|
72
|
+
<class 'sage.categories.semisimple_algebras.SemisimpleAlgebras'>
|
|
73
|
+
"""
|
|
74
|
+
if base_category is None:
|
|
75
|
+
return cls
|
|
76
|
+
return BoundClass(cls, base_category.base_ring())
|
|
77
|
+
|
|
78
|
+
@cached_method
|
|
79
|
+
def super_categories(self):
|
|
80
|
+
"""
|
|
81
|
+
EXAMPLES::
|
|
82
|
+
|
|
83
|
+
sage: Algebras(QQ).Semisimple().super_categories()
|
|
84
|
+
[Category of algebras over Rational Field]
|
|
85
|
+
"""
|
|
86
|
+
R = self.base_ring()
|
|
87
|
+
return [Algebras(R)]
|
|
88
|
+
|
|
89
|
+
class ParentMethods:
|
|
90
|
+
|
|
91
|
+
def radical_basis(self, **keywords):
|
|
92
|
+
r"""
|
|
93
|
+
Return a basis of the Jacobson radical of this algebra.
|
|
94
|
+
|
|
95
|
+
- ``keywords`` -- for compatibility; ignored
|
|
96
|
+
|
|
97
|
+
OUTPUT: the empty list since this algebra is semisimple
|
|
98
|
+
|
|
99
|
+
EXAMPLES::
|
|
100
|
+
|
|
101
|
+
sage: A = SymmetricGroup(4).algebra(QQ) # needs sage.combinat sage.groups
|
|
102
|
+
sage: A.radical_basis() # needs sage.combinat sage.groups
|
|
103
|
+
()
|
|
104
|
+
|
|
105
|
+
TESTS::
|
|
106
|
+
|
|
107
|
+
sage: A.radical_basis.__module__ # needs sage.combinat sage.groups
|
|
108
|
+
'sage.categories.finite_dimensional_semisimple_algebras_with_basis'
|
|
109
|
+
"""
|
|
110
|
+
return ()
|
|
111
|
+
|
|
112
|
+
class FiniteDimensional(CategoryWithAxiom_over_base_ring):
|
|
113
|
+
|
|
114
|
+
WithBasis = LazyImport('sage.categories.finite_dimensional_semisimple_algebras_with_basis', 'FiniteDimensionalSemisimpleAlgebrasWithBasis')
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Sets With a Grading
|
|
4
|
+
"""
|
|
5
|
+
# ****************************************************************************
|
|
6
|
+
# Copyright (C) 2010-2012 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.categories.category_types import Category
|
|
13
|
+
from sage.categories.enumerated_sets import EnumeratedSets
|
|
14
|
+
from sage.categories.sets_cat import Sets
|
|
15
|
+
from sage.misc.abstract_method import abstract_method
|
|
16
|
+
from sage.misc.cachefunc import cached_method
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class SetsWithGrading(Category):
|
|
20
|
+
r"""
|
|
21
|
+
The category of sets with a grading.
|
|
22
|
+
|
|
23
|
+
A *set with a grading* is a set `S` equipped with a
|
|
24
|
+
grading by some other set `I` (by default the set `\NN` of the
|
|
25
|
+
nonnegative integers):
|
|
26
|
+
|
|
27
|
+
.. MATH::
|
|
28
|
+
|
|
29
|
+
S = \biguplus_{i\in I} S_i
|
|
30
|
+
|
|
31
|
+
where the *graded components* `S_i` are (usually finite)
|
|
32
|
+
sets. The *grading* function maps each element `s` of
|
|
33
|
+
`S` to its *grade* `i`, so that `s\in S_i`.
|
|
34
|
+
|
|
35
|
+
From implementation point of view, if the graded set is enumerated then
|
|
36
|
+
each graded component should be enumerated (there is a check in the method
|
|
37
|
+
:meth:`~SetsWithGrading.ParentMethods._test_graded_components`). The
|
|
38
|
+
contrary needs not be true.
|
|
39
|
+
|
|
40
|
+
To implement this category, a parent must either implement
|
|
41
|
+
:meth:`~SetsWithGrading.ParentMethods.graded_component()` or
|
|
42
|
+
:meth:`~SetsWithGrading.ParentMethods.subset()`. If only
|
|
43
|
+
:meth:`~SetsWithGrading.ParentMethods.subset()` is implemented, the first
|
|
44
|
+
argument must be the grading for compatibility with
|
|
45
|
+
:meth:`~SetsWithGrading.ParentMethods.graded_component()`. Additionally
|
|
46
|
+
either the parent must implement
|
|
47
|
+
:meth:`~SetsWithGrading.ParentMethods.grading()` or its elements must
|
|
48
|
+
implement a method ``grade()``. See the example
|
|
49
|
+
:class:`sage.categories.examples.sets_with_grading.NonNegativeIntegers`.
|
|
50
|
+
|
|
51
|
+
Finally, if the graded set is enumerated (see
|
|
52
|
+
:class:`~sage.categories.enumerated_sets.EnumeratedSets`) then each graded
|
|
53
|
+
component should be enumerated. The contrary needs not be true.
|
|
54
|
+
|
|
55
|
+
EXAMPLES:
|
|
56
|
+
|
|
57
|
+
A typical example of a set with a grading is the set of nonnegative
|
|
58
|
+
integers graded by themselves::
|
|
59
|
+
|
|
60
|
+
sage: N = SetsWithGrading().example(); N
|
|
61
|
+
Non negative integers
|
|
62
|
+
sage: N.category()
|
|
63
|
+
Category of facade infinite sets with grading
|
|
64
|
+
sage: N.grading_set()
|
|
65
|
+
Non negative integers
|
|
66
|
+
|
|
67
|
+
The *grading function* is given by ``N.grading``::
|
|
68
|
+
|
|
69
|
+
sage: N.grading(4)
|
|
70
|
+
4
|
|
71
|
+
|
|
72
|
+
The graded component `N_i` is the set with one element `i`::
|
|
73
|
+
|
|
74
|
+
sage: N.graded_component(grade=5)
|
|
75
|
+
{5}
|
|
76
|
+
sage: N.graded_component(grade=42)
|
|
77
|
+
{42}
|
|
78
|
+
|
|
79
|
+
Here are some information about this category::
|
|
80
|
+
|
|
81
|
+
sage: SetsWithGrading()
|
|
82
|
+
Category of sets with grading
|
|
83
|
+
sage: SetsWithGrading().super_categories()
|
|
84
|
+
[Category of sets]
|
|
85
|
+
sage: SetsWithGrading().all_super_categories()
|
|
86
|
+
[Category of sets with grading,
|
|
87
|
+
Category of sets,
|
|
88
|
+
Category of sets with partial maps,
|
|
89
|
+
Category of objects]
|
|
90
|
+
|
|
91
|
+
.. TODO::
|
|
92
|
+
|
|
93
|
+
- This should be moved to ``Sets().WithGrading()``.
|
|
94
|
+
- Should the grading set be a parameter for this category?
|
|
95
|
+
- Does the enumeration need to be compatible with the grading? Be
|
|
96
|
+
careful that the fact that graded components are allowed to be finite
|
|
97
|
+
or infinite make the answer complicated.
|
|
98
|
+
|
|
99
|
+
TESTS::
|
|
100
|
+
|
|
101
|
+
sage: C = SetsWithGrading()
|
|
102
|
+
sage: TestSuite(C).run()
|
|
103
|
+
"""
|
|
104
|
+
|
|
105
|
+
@cached_method
|
|
106
|
+
def super_categories(self):
|
|
107
|
+
"""
|
|
108
|
+
EXAMPLES::
|
|
109
|
+
|
|
110
|
+
sage: SetsWithGrading().super_categories()
|
|
111
|
+
[Category of sets]
|
|
112
|
+
"""
|
|
113
|
+
return [Sets()]
|
|
114
|
+
|
|
115
|
+
class ParentMethods:
|
|
116
|
+
|
|
117
|
+
def _test_graded_components(self, **options):
|
|
118
|
+
r"""
|
|
119
|
+
Test that some graded components of ``self`` are parent with
|
|
120
|
+
initialized category and that the parent has a properly implemented
|
|
121
|
+
``grading()`` method.
|
|
122
|
+
|
|
123
|
+
EXAMPLES::
|
|
124
|
+
|
|
125
|
+
sage: SetsWithGrading().example()._test_graded_components()
|
|
126
|
+
"""
|
|
127
|
+
tester = self._tester(**options)
|
|
128
|
+
for grade in self.grading_set().some_elements():
|
|
129
|
+
G = self.graded_component(grade)
|
|
130
|
+
if self in EnumeratedSets():
|
|
131
|
+
tester.assertIn(G, EnumeratedSets())
|
|
132
|
+
else:
|
|
133
|
+
tester.assertIn(G, Sets())
|
|
134
|
+
for elt in G.some_elements():
|
|
135
|
+
tester.assertEqual(self.grading(elt), grade)
|
|
136
|
+
|
|
137
|
+
def grading_set(self):
|
|
138
|
+
"""
|
|
139
|
+
Return the set ``self`` is graded by. By default, this is
|
|
140
|
+
the set of nonnegative integers.
|
|
141
|
+
|
|
142
|
+
EXAMPLES::
|
|
143
|
+
|
|
144
|
+
sage: SetsWithGrading().example().grading_set()
|
|
145
|
+
Non negative integers
|
|
146
|
+
"""
|
|
147
|
+
from sage.sets.non_negative_integers import NonNegativeIntegers
|
|
148
|
+
return NonNegativeIntegers()
|
|
149
|
+
|
|
150
|
+
# TODO:
|
|
151
|
+
# - Should this method be in EnumeratedSets? With a default implementation
|
|
152
|
+
# a la ``filter``?
|
|
153
|
+
# - Do we want to enforce implementing subset rather than graded_component?
|
|
154
|
+
@abstract_method(optional=True)
|
|
155
|
+
def subset(self, *args, **options):
|
|
156
|
+
"""
|
|
157
|
+
Return the subset of ``self`` described by the given parameters.
|
|
158
|
+
|
|
159
|
+
.. SEEALSO::
|
|
160
|
+
|
|
161
|
+
-:meth:`graded_component()`
|
|
162
|
+
|
|
163
|
+
EXAMPLES::
|
|
164
|
+
|
|
165
|
+
sage: W = WeightedIntegerVectors([3,2,1]); W
|
|
166
|
+
Integer vectors weighted by [3, 2, 1]
|
|
167
|
+
sage: W.subset(4)
|
|
168
|
+
Integer vectors of 4 weighted by [3, 2, 1]
|
|
169
|
+
"""
|
|
170
|
+
|
|
171
|
+
def graded_component(self, grade):
|
|
172
|
+
"""
|
|
173
|
+
Return the graded component of ``self`` with grade ``grade``.
|
|
174
|
+
|
|
175
|
+
The default implementation just calls the method :meth:`subset()`
|
|
176
|
+
with the first argument ``grade``.
|
|
177
|
+
|
|
178
|
+
EXAMPLES::
|
|
179
|
+
|
|
180
|
+
sage: N = SetsWithGrading().example(); N
|
|
181
|
+
Non negative integers
|
|
182
|
+
sage: N.graded_component(3)
|
|
183
|
+
{3}
|
|
184
|
+
"""
|
|
185
|
+
return self.subset(grade)
|
|
186
|
+
|
|
187
|
+
def grading(self, elt):
|
|
188
|
+
"""
|
|
189
|
+
Return the grading of the element ``elt`` of ``self``.
|
|
190
|
+
|
|
191
|
+
This default implementation calls ``elt.grade()``.
|
|
192
|
+
|
|
193
|
+
EXAMPLES::
|
|
194
|
+
|
|
195
|
+
sage: N = SetsWithGrading().example(); N
|
|
196
|
+
Non negative integers
|
|
197
|
+
sage: N.grading(4)
|
|
198
|
+
4
|
|
199
|
+
"""
|
|
200
|
+
return elt.grade()
|
|
201
|
+
|
|
202
|
+
def generating_series(self):
|
|
203
|
+
"""
|
|
204
|
+
Default implementation for generating series.
|
|
205
|
+
|
|
206
|
+
OUTPUT: a series, indexed by the grading set
|
|
207
|
+
|
|
208
|
+
EXAMPLES::
|
|
209
|
+
|
|
210
|
+
sage: N = SetsWithGrading().example(); N
|
|
211
|
+
Non negative integers
|
|
212
|
+
sage: N.generating_series()
|
|
213
|
+
1/(-z + 1)
|
|
214
|
+
|
|
215
|
+
sage: Permutations().generating_series() # needs sage.combinat
|
|
216
|
+
1 + z + 2*z^2 + 6*z^3 + 24*z^4 + 120*z^5 + 720*z^6 + O(z^7)
|
|
217
|
+
|
|
218
|
+
.. TODO::
|
|
219
|
+
|
|
220
|
+
- Very likely, this should always return a lazy power series.
|
|
221
|
+
"""
|
|
222
|
+
from sage.rings.integer_ring import ZZ
|
|
223
|
+
from sage.rings.lazy_series_ring import LazyPowerSeriesRing
|
|
224
|
+
from sage.sets.non_negative_integers import NonNegativeIntegers
|
|
225
|
+
if isinstance(self.grading_set(), NonNegativeIntegers):
|
|
226
|
+
R = LazyPowerSeriesRing(ZZ, names='z')
|
|
227
|
+
return R(lambda n: self.graded_component(n).cardinality())
|
|
228
|
+
raise NotImplementedError
|
|
229
|
+
|
|
230
|
+
# TODO:
|
|
231
|
+
# * asymptotic behavior: we need an object for asymptotic behavior and
|
|
232
|
+
# a default name for the method that should be here. Such method will
|
|
233
|
+
# have two goals (and perhaps need two implementations): give a
|
|
234
|
+
# theorem on asymptotic and be a tool to determine a strategy for
|
|
235
|
+
# algorithms.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Shephard Groups
|
|
4
|
+
"""
|
|
5
|
+
#*****************************************************************************
|
|
6
|
+
# Copyright (C) 2016 Travis Scrimshaw <tscrim at ucdavis.edu>
|
|
7
|
+
#
|
|
8
|
+
# This program is free software: you can redistribute it and/or modify
|
|
9
|
+
# it under the terms of the GNU General Public License as published by
|
|
10
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
11
|
+
# (at your option) any later version.
|
|
12
|
+
# http://www.gnu.org/licenses/
|
|
13
|
+
#*****************************************************************************
|
|
14
|
+
|
|
15
|
+
from sage.categories.category_singleton import Category_singleton
|
|
16
|
+
from sage.categories.generalized_coxeter_groups import GeneralizedCoxeterGroups
|
|
17
|
+
from sage.misc.cachefunc import cached_method
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class ShephardGroups(Category_singleton):
|
|
21
|
+
r"""
|
|
22
|
+
The category of Shephard groups.
|
|
23
|
+
|
|
24
|
+
EXAMPLES::
|
|
25
|
+
|
|
26
|
+
sage: from sage.categories.shephard_groups import ShephardGroups
|
|
27
|
+
sage: C = ShephardGroups(); C
|
|
28
|
+
Category of shephard groups
|
|
29
|
+
|
|
30
|
+
TESTS::
|
|
31
|
+
|
|
32
|
+
sage: TestSuite(C).run()
|
|
33
|
+
"""
|
|
34
|
+
@cached_method
|
|
35
|
+
def super_categories(self):
|
|
36
|
+
"""
|
|
37
|
+
EXAMPLES::
|
|
38
|
+
|
|
39
|
+
sage: from sage.categories.shephard_groups import ShephardGroups
|
|
40
|
+
sage: ShephardGroups().super_categories()
|
|
41
|
+
[Category of finite generalized Coxeter groups]
|
|
42
|
+
"""
|
|
43
|
+
return [GeneralizedCoxeterGroups().Finite()]
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
"""
|
|
3
|
+
Signed Tensor Product Functorial Construction
|
|
4
|
+
|
|
5
|
+
AUTHORS:
|
|
6
|
+
|
|
7
|
+
- Travis Scrimshaw (2019-07): initial version
|
|
8
|
+
"""
|
|
9
|
+
# ****************************************************************************
|
|
10
|
+
# Copyright (C) 2019 Travis Scrimshaw <tcscrims at gamil.com>
|
|
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.covariant_functorial_construction import CovariantFunctorialConstruction, CovariantConstructionCategory
|
|
17
|
+
from sage.typeset.unicode_characters import unicode_otimes
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class SignedTensorProductFunctor(CovariantFunctorialConstruction):
|
|
21
|
+
"""
|
|
22
|
+
A singleton class for the signed tensor functor.
|
|
23
|
+
|
|
24
|
+
This functor takes a collection of graded algebras (possibly with
|
|
25
|
+
basis) and constructs the signed tensor product of those algebras.
|
|
26
|
+
If this algebra is in a subcategory, say that of
|
|
27
|
+
``Algebras(QQ).Graded()``, it is automatically endowed with
|
|
28
|
+
its natural algebra structure, thanks to the category
|
|
29
|
+
``Algebras(QQ).Graded().SignedTensorProducts()`` of signed tensor
|
|
30
|
+
products of graded algebras. For elements, it constructs the natural
|
|
31
|
+
tensor product element in the corresponding tensor product of their
|
|
32
|
+
parents.
|
|
33
|
+
|
|
34
|
+
The signed tensor functor is covariant: if ``A`` is a subcategory
|
|
35
|
+
of ``B``, then ``A.SignedTensorProducts()`` is a subcategory of
|
|
36
|
+
``B.SignedTensorProducts()`` (see also
|
|
37
|
+
:class:`~sage.categories.covariant_functorial_construction.CovariantFunctorialConstruction`). Hence,
|
|
38
|
+
the role of ``Algebras(QQ).Graded().SignedTensorProducts()`` is solely
|
|
39
|
+
to provide mathematical information and algorithms which are relevant to
|
|
40
|
+
signed tensor product of graded algebras.
|
|
41
|
+
|
|
42
|
+
Those are implemented in the nested class
|
|
43
|
+
:class:`~sage.categories.algebras.Algebras.SignedTensorProducts`
|
|
44
|
+
of ``Algebras(QQ).Graded()``. This nested class is itself a subclass of
|
|
45
|
+
:class:`~sage.categories.signed_tensor.SignedTensorProductsCategory`.
|
|
46
|
+
|
|
47
|
+
EXAMPLES::
|
|
48
|
+
|
|
49
|
+
sage: tensor_signed
|
|
50
|
+
The signed tensor functorial construction
|
|
51
|
+
|
|
52
|
+
TESTS::
|
|
53
|
+
|
|
54
|
+
sage: TestSuite(tensor_signed).run()
|
|
55
|
+
"""
|
|
56
|
+
_functor_name = "tensor"
|
|
57
|
+
_functor_category = "SignedTensorProducts"
|
|
58
|
+
symbol = " # "
|
|
59
|
+
unicode_symbol = f" {unicode_otimes} "
|
|
60
|
+
|
|
61
|
+
def _repr_(self):
|
|
62
|
+
"""
|
|
63
|
+
EXAMPLES::
|
|
64
|
+
|
|
65
|
+
sage: tensor_signed
|
|
66
|
+
The signed tensor functorial construction
|
|
67
|
+
"""
|
|
68
|
+
# We need this to distinguish it from tensor(), but we want
|
|
69
|
+
# it to have the same _functor_name (which is used in the
|
|
70
|
+
# default _repr_
|
|
71
|
+
return "The signed tensor functorial construction"
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
tensor_signed = SignedTensorProductFunctor()
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
class SignedTensorProductsCategory(CovariantConstructionCategory):
|
|
78
|
+
r"""
|
|
79
|
+
An abstract base class for all SignedTensorProducts's categories.
|
|
80
|
+
|
|
81
|
+
TESTS::
|
|
82
|
+
|
|
83
|
+
sage: C = AlgebrasWithBasis(QQ).Graded().SignedTensorProducts()
|
|
84
|
+
sage: C
|
|
85
|
+
Category of signed tensor products of graded algebras with basis over Rational Field
|
|
86
|
+
sage: C.base_category()
|
|
87
|
+
Category of graded algebras with basis over Rational Field
|
|
88
|
+
sage: latex(C)
|
|
89
|
+
\mathbf{SignedTensorProducts}(\mathbf{GradedAlgebrasWithBasis}(\mathbf{AlgebrasWithBasis}_{\Bold{Q}}))
|
|
90
|
+
sage: TestSuite(C).run()
|
|
91
|
+
"""
|
|
92
|
+
_functor_category = "SignedTensorProducts"
|
|
93
|
+
|
|
94
|
+
def SignedTensorProducts(self):
|
|
95
|
+
r"""
|
|
96
|
+
Return the category of signed tensor products of objects of ``self``.
|
|
97
|
+
|
|
98
|
+
By associativity of signed tensor products, this is ``self`` (a tensor
|
|
99
|
+
product of signed tensor products of `Cat`'s is a tensor product of
|
|
100
|
+
`Cat`'s with the same twisting morphism)
|
|
101
|
+
|
|
102
|
+
EXAMPLES::
|
|
103
|
+
|
|
104
|
+
sage: AlgebrasWithBasis(QQ).Graded().SignedTensorProducts().SignedTensorProducts()
|
|
105
|
+
Category of signed tensor products of graded algebras with basis
|
|
106
|
+
over Rational Field
|
|
107
|
+
"""
|
|
108
|
+
return self
|
|
109
|
+
|
|
110
|
+
def base(self):
|
|
111
|
+
"""
|
|
112
|
+
The base of a signed tensor product is the base (usually a ring)
|
|
113
|
+
of the underlying category.
|
|
114
|
+
|
|
115
|
+
EXAMPLES::
|
|
116
|
+
|
|
117
|
+
sage: AlgebrasWithBasis(ZZ).Graded().SignedTensorProducts().base()
|
|
118
|
+
Integer Ring
|
|
119
|
+
"""
|
|
120
|
+
return self.base_category().base()
|