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,214 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Finitely generated semigroups
|
|
4
|
+
"""
|
|
5
|
+
# ****************************************************************************
|
|
6
|
+
# Copyright (C) 2014 Nicolas M. Thiery <nthiery at users.sf.net>
|
|
7
|
+
#
|
|
8
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
9
|
+
# https://www.gnu.org/licenses/
|
|
10
|
+
# *****************************************************************************
|
|
11
|
+
|
|
12
|
+
import itertools
|
|
13
|
+
from sage.misc.abstract_method import abstract_method
|
|
14
|
+
from sage.misc.cachefunc import cached_method
|
|
15
|
+
from sage.categories.category_with_axiom import CategoryWithAxiom
|
|
16
|
+
from sage.categories.semigroups import Semigroups
|
|
17
|
+
from sage.categories.enumerated_sets import EnumeratedSets
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class FinitelyGeneratedSemigroups(CategoryWithAxiom):
|
|
21
|
+
r"""
|
|
22
|
+
The category of finitely generated (multiplicative) semigroups.
|
|
23
|
+
|
|
24
|
+
A :class:`finitely generated semigroup <Semigroups>` is a
|
|
25
|
+
:class:`semigroup <Semigroups>` endowed with a distinguished
|
|
26
|
+
finite set of generators (see
|
|
27
|
+
:meth:`FinitelyGeneratedSemigroups.ParentMethods.semigroup_generators`).
|
|
28
|
+
This makes it into an :class:`enumerated set <EnumeratedSets>`.
|
|
29
|
+
|
|
30
|
+
EXAMPLES::
|
|
31
|
+
|
|
32
|
+
sage: C = Semigroups().FinitelyGenerated(); C
|
|
33
|
+
Category of finitely generated semigroups
|
|
34
|
+
sage: C.super_categories()
|
|
35
|
+
[Category of semigroups,
|
|
36
|
+
Category of finitely generated magmas,
|
|
37
|
+
Category of enumerated sets]
|
|
38
|
+
sage: sorted(C.axioms())
|
|
39
|
+
['Associative', 'Enumerated', 'FinitelyGeneratedAsMagma']
|
|
40
|
+
sage: C.example()
|
|
41
|
+
An example of a semigroup: the free semigroup generated
|
|
42
|
+
by ('a', 'b', 'c', 'd')
|
|
43
|
+
|
|
44
|
+
TESTS::
|
|
45
|
+
|
|
46
|
+
sage: TestSuite(C).run()
|
|
47
|
+
"""
|
|
48
|
+
|
|
49
|
+
_base_category_class_and_axiom = (Semigroups, "FinitelyGeneratedAsMagma")
|
|
50
|
+
|
|
51
|
+
@cached_method
|
|
52
|
+
def extra_super_categories(self):
|
|
53
|
+
r"""
|
|
54
|
+
State that a finitely generated semigroup is endowed with a
|
|
55
|
+
default enumeration.
|
|
56
|
+
|
|
57
|
+
EXAMPLES::
|
|
58
|
+
|
|
59
|
+
sage: Semigroups().FinitelyGenerated().extra_super_categories()
|
|
60
|
+
[Category of enumerated sets]
|
|
61
|
+
"""
|
|
62
|
+
return [EnumeratedSets()]
|
|
63
|
+
|
|
64
|
+
def example(self):
|
|
65
|
+
r"""
|
|
66
|
+
EXAMPLES::
|
|
67
|
+
|
|
68
|
+
sage: Semigroups().FinitelyGenerated().example()
|
|
69
|
+
An example of a semigroup: the free semigroup generated
|
|
70
|
+
by ('a', 'b', 'c', 'd')
|
|
71
|
+
"""
|
|
72
|
+
return Semigroups().example("free")
|
|
73
|
+
|
|
74
|
+
class ParentMethods:
|
|
75
|
+
|
|
76
|
+
@abstract_method
|
|
77
|
+
def semigroup_generators(self):
|
|
78
|
+
r"""
|
|
79
|
+
Return distinguished semigroup generators for ``self``.
|
|
80
|
+
|
|
81
|
+
OUTPUT: a finite family
|
|
82
|
+
|
|
83
|
+
This method should be implemented by all semigroups in
|
|
84
|
+
:class:`FinitelyGeneratedSemigroups`.
|
|
85
|
+
|
|
86
|
+
EXAMPLES::
|
|
87
|
+
|
|
88
|
+
sage: S = FiniteSemigroups().example()
|
|
89
|
+
sage: S.semigroup_generators()
|
|
90
|
+
Family ('a', 'b', 'c', 'd')
|
|
91
|
+
"""
|
|
92
|
+
|
|
93
|
+
# TODO: update transitive ideal
|
|
94
|
+
|
|
95
|
+
def succ_generators(self, side='twosided'):
|
|
96
|
+
r"""
|
|
97
|
+
Return the successor function of the ``side``-sided Cayley
|
|
98
|
+
graph of ``self``.
|
|
99
|
+
|
|
100
|
+
This is a function that maps an element of ``self`` to all
|
|
101
|
+
the products of ``x`` by a generator of this semigroup,
|
|
102
|
+
where the product is taken on the left, right, or both
|
|
103
|
+
sides.
|
|
104
|
+
|
|
105
|
+
INPUT:
|
|
106
|
+
|
|
107
|
+
- ``side`` -- ``'left'``, ``'right'``, or ``'twosided'`` (default)
|
|
108
|
+
|
|
109
|
+
.. TODO:: Design choice:
|
|
110
|
+
|
|
111
|
+
- find a better name for this method
|
|
112
|
+
- should we return a set? a family?
|
|
113
|
+
|
|
114
|
+
EXAMPLES::
|
|
115
|
+
|
|
116
|
+
sage: S = FiniteSemigroups().example()
|
|
117
|
+
sage: S.succ_generators("left" )(S('ca'))
|
|
118
|
+
('ac', 'bca', 'ca', 'dca')
|
|
119
|
+
sage: S.succ_generators("right")(S('ca'))
|
|
120
|
+
('ca', 'cab', 'ca', 'cad')
|
|
121
|
+
sage: S.succ_generators("twosided" )(S('ca'))
|
|
122
|
+
('ac', 'bca', 'ca', 'dca', 'ca', 'cab', 'ca', 'cad')
|
|
123
|
+
"""
|
|
124
|
+
left = (side == "left" or side == "twosided")
|
|
125
|
+
right = (side == "right" or side == "twosided")
|
|
126
|
+
generators = self.semigroup_generators()
|
|
127
|
+
return lambda x: (tuple(g * x for g in generators) if left else ()) + (tuple(x * g for g in generators) if right else ())
|
|
128
|
+
|
|
129
|
+
def __iter__(self):
|
|
130
|
+
r"""
|
|
131
|
+
Return an iterator over the elements of ``self``.
|
|
132
|
+
|
|
133
|
+
This brute force implementation recursively multiplies
|
|
134
|
+
together the distinguished semigroup generators.
|
|
135
|
+
|
|
136
|
+
.. SEEALSO:: :meth:`semigroup_generators`
|
|
137
|
+
|
|
138
|
+
EXAMPLES::
|
|
139
|
+
|
|
140
|
+
sage: S = FiniteSemigroups().example(alphabet=('x','y'))
|
|
141
|
+
sage: it = S.__iter__()
|
|
142
|
+
sage: sorted(it)
|
|
143
|
+
['x', 'xy', 'y', 'yx']
|
|
144
|
+
"""
|
|
145
|
+
from sage.sets.recursively_enumerated_set import RecursivelyEnumeratedSet
|
|
146
|
+
return iter(RecursivelyEnumeratedSet(self.semigroup_generators(),
|
|
147
|
+
self.succ_generators(side='right'),
|
|
148
|
+
enumeration='breadth'))
|
|
149
|
+
|
|
150
|
+
def ideal(self, gens, side='twosided'):
|
|
151
|
+
r"""
|
|
152
|
+
Return the ``side``-sided ideal generated by ``gens``.
|
|
153
|
+
|
|
154
|
+
This brute force implementation recursively multiplies the
|
|
155
|
+
elements of ``gens`` by the distinguished generators of
|
|
156
|
+
this semigroup.
|
|
157
|
+
|
|
158
|
+
.. SEEALSO:: :meth:`semigroup_generators`
|
|
159
|
+
|
|
160
|
+
INPUT:
|
|
161
|
+
|
|
162
|
+
- ``gens`` -- list (or iterable) of elements of ``self``
|
|
163
|
+
- ``side`` -- [default: "twosided"] "left", "right" or "twosided"
|
|
164
|
+
|
|
165
|
+
EXAMPLES::
|
|
166
|
+
|
|
167
|
+
sage: S = FiniteSemigroups().example()
|
|
168
|
+
sage: sorted(S.ideal([S('cab')], side='left'))
|
|
169
|
+
['abc', 'abcd', 'abdc', 'acb', 'acbd', 'acdb', 'adbc',
|
|
170
|
+
'adcb', 'bac', 'bacd', 'badc', 'bca', 'bcad', 'bcda',
|
|
171
|
+
'bdac', 'bdca', 'cab', 'cabd', 'cadb', 'cba', 'cbad',
|
|
172
|
+
'cbda', 'cdab', 'cdba', 'dabc', 'dacb', 'dbac', 'dbca',
|
|
173
|
+
'dcab', 'dcba']
|
|
174
|
+
sage: list(S.ideal([S('cab')], side='right'))
|
|
175
|
+
['cab', 'cabd']
|
|
176
|
+
sage: sorted(S.ideal([S('cab')], side='twosided'))
|
|
177
|
+
['abc', 'abcd', 'abdc', 'acb', 'acbd', 'acdb', 'adbc',
|
|
178
|
+
'adcb', 'bac', 'bacd', 'badc', 'bca', 'bcad', 'bcda',
|
|
179
|
+
'bdac', 'bdca', 'cab', 'cabd', 'cadb', 'cba', 'cbad',
|
|
180
|
+
'cbda', 'cdab', 'cdba', 'dabc', 'dacb', 'dbac', 'dbca',
|
|
181
|
+
'dcab', 'dcba']
|
|
182
|
+
sage: sorted(S.ideal([S('cab')]))
|
|
183
|
+
['abc', 'abcd', 'abdc', 'acb', 'acbd', 'acdb', 'adbc',
|
|
184
|
+
'adcb', 'bac', 'bacd', 'badc', 'bca', 'bcad', 'bcda',
|
|
185
|
+
'bdac', 'bdca', 'cab', 'cabd', 'cadb', 'cba', 'cbad',
|
|
186
|
+
'cbda', 'cdab', 'cdba', 'dabc', 'dacb', 'dbac', 'dbca',
|
|
187
|
+
'dcab', 'dcba']
|
|
188
|
+
"""
|
|
189
|
+
from sage.sets.recursively_enumerated_set import RecursivelyEnumeratedSet
|
|
190
|
+
return RecursivelyEnumeratedSet(gens,
|
|
191
|
+
self.succ_generators(side=side))
|
|
192
|
+
|
|
193
|
+
class Finite(CategoryWithAxiom):
|
|
194
|
+
|
|
195
|
+
class ParentMethods:
|
|
196
|
+
def some_elements(self):
|
|
197
|
+
r"""
|
|
198
|
+
Return an iterable containing some elements of the semigroup.
|
|
199
|
+
|
|
200
|
+
OUTPUT: the ten first elements of the semigroup, if they exist
|
|
201
|
+
|
|
202
|
+
EXAMPLES::
|
|
203
|
+
|
|
204
|
+
sage: S = FiniteSemigroups().example(alphabet=('x','y'))
|
|
205
|
+
sage: sorted(S.some_elements())
|
|
206
|
+
['x', 'xy', 'y', 'yx']
|
|
207
|
+
sage: S = FiniteSemigroups().example(alphabet=('x','y','z'))
|
|
208
|
+
sage: X = S.some_elements()
|
|
209
|
+
sage: len(X)
|
|
210
|
+
10
|
|
211
|
+
sage: all(x in S for x in X)
|
|
212
|
+
True
|
|
213
|
+
"""
|
|
214
|
+
return list(itertools.islice(self, 10))
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Function fields
|
|
4
|
+
"""
|
|
5
|
+
#*****************************************************************************
|
|
6
|
+
# Copyright (C) 2005 David Kohel <kohel@maths.usyd.edu>
|
|
7
|
+
# William Stein <wstein@math.ucsd.edu>
|
|
8
|
+
# 2008 Teresa Gomez-Diaz (CNRS) <Teresa.Gomez-Diaz@univ-mlv.fr>
|
|
9
|
+
# 2008-2009 Nicolas M. Thiery <nthiery at users.sf.net>
|
|
10
|
+
#
|
|
11
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
12
|
+
# http://www.gnu.org/licenses/
|
|
13
|
+
#******************************************************************************
|
|
14
|
+
|
|
15
|
+
from sage.categories.category import Category
|
|
16
|
+
from sage.misc.cachefunc import cached_method
|
|
17
|
+
from sage.categories.basic import Fields
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class FunctionFields(Category):
|
|
21
|
+
r"""
|
|
22
|
+
The category of function fields.
|
|
23
|
+
|
|
24
|
+
EXAMPLES:
|
|
25
|
+
|
|
26
|
+
We create the category of function fields::
|
|
27
|
+
|
|
28
|
+
sage: C = FunctionFields()
|
|
29
|
+
sage: C
|
|
30
|
+
Category of function fields
|
|
31
|
+
|
|
32
|
+
TESTS::
|
|
33
|
+
|
|
34
|
+
sage: TestSuite(FunctionFields()).run()
|
|
35
|
+
"""
|
|
36
|
+
@cached_method
|
|
37
|
+
def super_categories(self):
|
|
38
|
+
"""
|
|
39
|
+
Return the Category of which this is a direct sub-Category
|
|
40
|
+
For a list off all super categories see all_super_categories
|
|
41
|
+
|
|
42
|
+
EXAMPLES::
|
|
43
|
+
|
|
44
|
+
sage: FunctionFields().super_categories()
|
|
45
|
+
[Category of fields]
|
|
46
|
+
"""
|
|
47
|
+
return [Fields()]
|
|
48
|
+
|
|
49
|
+
def _call_(self, x):
|
|
50
|
+
r"""
|
|
51
|
+
Construct an object in this category from the data in ``x``,
|
|
52
|
+
or throw a :exc:`TypeError`.
|
|
53
|
+
|
|
54
|
+
EXAMPLES::
|
|
55
|
+
|
|
56
|
+
sage: C = FunctionFields()
|
|
57
|
+
sage: K.<x> = FunctionField(QQ)
|
|
58
|
+
sage: C(K)
|
|
59
|
+
Rational function field in x over Rational Field
|
|
60
|
+
sage: Ky.<y> = K[]
|
|
61
|
+
sage: L = K.extension(y^2 - x) # needs sage.rings.function_field
|
|
62
|
+
sage: C(L) # needs sage.rings.function_field
|
|
63
|
+
Function field in y defined by y^2 - x
|
|
64
|
+
sage: C(L.equation_order()) # needs sage.rings.function_field
|
|
65
|
+
Function field in y defined by y^2 - x
|
|
66
|
+
"""
|
|
67
|
+
try:
|
|
68
|
+
return x.function_field()
|
|
69
|
+
except AttributeError:
|
|
70
|
+
raise TypeError("unable to canonically associate a function field to %s" % x)
|
|
71
|
+
|
|
72
|
+
class ParentMethods:
|
|
73
|
+
pass
|
|
74
|
+
|
|
75
|
+
class ElementMethods:
|
|
76
|
+
pass
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
G-Sets
|
|
4
|
+
"""
|
|
5
|
+
#*****************************************************************************
|
|
6
|
+
# Copyright (C) 2008 David Kohel <kohel@maths.usyd.edu> and
|
|
7
|
+
# William Stein <wstein@math.ucsd.edu>
|
|
8
|
+
# Nicolas M. Thiery <nthiery at users.sf.net>
|
|
9
|
+
#
|
|
10
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
11
|
+
# http://www.gnu.org/licenses/
|
|
12
|
+
#******************************************************************************
|
|
13
|
+
|
|
14
|
+
from sage.categories.category import Category
|
|
15
|
+
from sage.categories.sets_cat import Sets
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
#############################################################
|
|
19
|
+
# GSets
|
|
20
|
+
# `G`-Sets play an important role in permutation groups.
|
|
21
|
+
#############################################################
|
|
22
|
+
class GSets(Category):
|
|
23
|
+
"""
|
|
24
|
+
The category of `G`-sets, for a group `G`.
|
|
25
|
+
|
|
26
|
+
EXAMPLES::
|
|
27
|
+
|
|
28
|
+
sage: S = SymmetricGroup(3) # needs sage.groups
|
|
29
|
+
sage: GSets(S) # needs sage.groups
|
|
30
|
+
Category of G-sets for Symmetric group of order 3! as a permutation group
|
|
31
|
+
|
|
32
|
+
TODO: should this derive from Category_over_base?
|
|
33
|
+
"""
|
|
34
|
+
def __init__(self, G):
|
|
35
|
+
"""
|
|
36
|
+
TESTS::
|
|
37
|
+
|
|
38
|
+
sage: S8 = SymmetricGroup(8) # needs sage.groups
|
|
39
|
+
sage: TestSuite(GSets(S8)).run() # needs sage.groups
|
|
40
|
+
"""
|
|
41
|
+
Category.__init__(self)
|
|
42
|
+
self.__G = G
|
|
43
|
+
|
|
44
|
+
def _repr_object_names(self):
|
|
45
|
+
"""
|
|
46
|
+
EXAMPLES::
|
|
47
|
+
|
|
48
|
+
sage: GSets(SymmetricGroup(8)) # indirect doctests # needs sage.groups
|
|
49
|
+
Category of G-sets for Symmetric group of order 8! as a permutation group
|
|
50
|
+
"""
|
|
51
|
+
return "G-sets for %s" % self.__G
|
|
52
|
+
|
|
53
|
+
#def construction(self):
|
|
54
|
+
# return (self.__class__, self.__G)
|
|
55
|
+
|
|
56
|
+
def super_categories(self):
|
|
57
|
+
"""
|
|
58
|
+
EXAMPLES::
|
|
59
|
+
|
|
60
|
+
sage: GSets(SymmetricGroup(8)).super_categories() # needs sage.groups
|
|
61
|
+
[Category of sets]
|
|
62
|
+
"""
|
|
63
|
+
return [Sets()]
|
|
64
|
+
|
|
65
|
+
@classmethod
|
|
66
|
+
def an_instance(cls):
|
|
67
|
+
"""
|
|
68
|
+
Return an instance of this class.
|
|
69
|
+
|
|
70
|
+
EXAMPLES::
|
|
71
|
+
|
|
72
|
+
sage: GSets.an_instance() # indirect doctest # needs sage.groups
|
|
73
|
+
Category of G-sets for Symmetric group of order 8! as a permutation group
|
|
74
|
+
"""
|
|
75
|
+
from sage.groups.perm_gps.permgroup_named import SymmetricGroup
|
|
76
|
+
G = SymmetricGroup(8)
|
|
77
|
+
return cls(G)
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Gcd domains
|
|
4
|
+
"""
|
|
5
|
+
#*****************************************************************************
|
|
6
|
+
# Copyright (C) 2008 Teresa Gomez-Diaz (CNRS) <Teresa.Gomez-Diaz@univ-mlv.fr>
|
|
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.category_singleton import Category_singleton
|
|
13
|
+
from sage.categories.integral_domains import IntegralDomains
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class GcdDomains(Category_singleton):
|
|
17
|
+
"""
|
|
18
|
+
The category of gcd domains
|
|
19
|
+
domains where gcd can be computed but where there is no guarantee of
|
|
20
|
+
factorisation into irreducibles
|
|
21
|
+
|
|
22
|
+
EXAMPLES::
|
|
23
|
+
|
|
24
|
+
sage: GcdDomains()
|
|
25
|
+
Category of gcd domains
|
|
26
|
+
sage: GcdDomains().super_categories()
|
|
27
|
+
[Category of integral domains]
|
|
28
|
+
|
|
29
|
+
TESTS::
|
|
30
|
+
|
|
31
|
+
sage: TestSuite(GcdDomains()).run()
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
def super_categories(self):
|
|
35
|
+
"""
|
|
36
|
+
EXAMPLES::
|
|
37
|
+
|
|
38
|
+
sage: GcdDomains().super_categories()
|
|
39
|
+
[Category of integral domains]
|
|
40
|
+
"""
|
|
41
|
+
return [IntegralDomains()]
|
|
42
|
+
|
|
43
|
+
def additional_structure(self):
|
|
44
|
+
"""
|
|
45
|
+
Return ``None``.
|
|
46
|
+
|
|
47
|
+
Indeed, the category of gcd domains defines no additional
|
|
48
|
+
structure: a ring morphism between two gcd domains is a gcd
|
|
49
|
+
domain morphism.
|
|
50
|
+
|
|
51
|
+
.. SEEALSO:: :meth:`Category.additional_structure`
|
|
52
|
+
|
|
53
|
+
EXAMPLES::
|
|
54
|
+
|
|
55
|
+
sage: GcdDomains().additional_structure()
|
|
56
|
+
"""
|
|
57
|
+
return None
|
|
58
|
+
|
|
59
|
+
class ParentMethods:
|
|
60
|
+
pass
|
|
61
|
+
|
|
62
|
+
class ElementMethods:
|
|
63
|
+
# gcd(x,y)
|
|
64
|
+
# lcm(x,y)
|
|
65
|
+
pass
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Generalized Coxeter 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.misc.cachefunc import cached_method
|
|
16
|
+
from sage.categories.category_singleton import Category_singleton
|
|
17
|
+
from sage.categories.category_with_axiom import CategoryWithAxiom
|
|
18
|
+
from sage.categories.complex_reflection_or_generalized_coxeter_groups import ComplexReflectionOrGeneralizedCoxeterGroups
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class GeneralizedCoxeterGroups(Category_singleton):
|
|
22
|
+
r"""
|
|
23
|
+
The category of generalized Coxeter groups.
|
|
24
|
+
|
|
25
|
+
A generalized Coxeter group is a group with a presentation of
|
|
26
|
+
the following form:
|
|
27
|
+
|
|
28
|
+
.. MATH::
|
|
29
|
+
|
|
30
|
+
\langle s_i \mid s_i^{p_i}, s_i s_j \cdots = s_j s_i \cdots \rangle,
|
|
31
|
+
|
|
32
|
+
where `p_i > 1`, `i \in I`, and the factors in the braid relation
|
|
33
|
+
occur `m_{ij} = m_{ji}` times for all `i \neq j \in I`.
|
|
34
|
+
|
|
35
|
+
EXAMPLES::
|
|
36
|
+
|
|
37
|
+
sage: from sage.categories.generalized_coxeter_groups import GeneralizedCoxeterGroups
|
|
38
|
+
sage: C = GeneralizedCoxeterGroups(); C
|
|
39
|
+
Category of generalized Coxeter groups
|
|
40
|
+
|
|
41
|
+
TESTS::
|
|
42
|
+
|
|
43
|
+
sage: TestSuite(C).run()
|
|
44
|
+
"""
|
|
45
|
+
@cached_method
|
|
46
|
+
def super_categories(self):
|
|
47
|
+
"""
|
|
48
|
+
EXAMPLES::
|
|
49
|
+
|
|
50
|
+
sage: from sage.categories.generalized_coxeter_groups import GeneralizedCoxeterGroups
|
|
51
|
+
sage: GeneralizedCoxeterGroups().super_categories()
|
|
52
|
+
[Category of complex reflection or generalized Coxeter groups]
|
|
53
|
+
"""
|
|
54
|
+
return [ComplexReflectionOrGeneralizedCoxeterGroups()]
|
|
55
|
+
|
|
56
|
+
def additional_structure(self):
|
|
57
|
+
r"""
|
|
58
|
+
Return ``None``.
|
|
59
|
+
|
|
60
|
+
Indeed, all the structure generalized Coxeter groups have in
|
|
61
|
+
addition to groups (simple reflections, ...) is already
|
|
62
|
+
defined in the super category.
|
|
63
|
+
|
|
64
|
+
.. SEEALSO:: :meth:`Category.additional_structure`
|
|
65
|
+
|
|
66
|
+
EXAMPLES::
|
|
67
|
+
|
|
68
|
+
sage: from sage.categories.generalized_coxeter_groups import GeneralizedCoxeterGroups
|
|
69
|
+
sage: GeneralizedCoxeterGroups().additional_structure()
|
|
70
|
+
"""
|
|
71
|
+
return None
|
|
72
|
+
|
|
73
|
+
class Finite(CategoryWithAxiom):
|
|
74
|
+
"""
|
|
75
|
+
The category of finite generalized Coxeter groups.
|
|
76
|
+
"""
|
|
77
|
+
def extra_super_categories(self):
|
|
78
|
+
"""
|
|
79
|
+
Implement that a finite generalized Coxeter group is a
|
|
80
|
+
well-generated complex reflection group.
|
|
81
|
+
|
|
82
|
+
EXAMPLES::
|
|
83
|
+
|
|
84
|
+
sage: from sage.categories.generalized_coxeter_groups import GeneralizedCoxeterGroups
|
|
85
|
+
sage: from sage.categories.complex_reflection_groups import ComplexReflectionGroups
|
|
86
|
+
|
|
87
|
+
sage: Cat = GeneralizedCoxeterGroups().Finite()
|
|
88
|
+
sage: Cat.extra_super_categories()
|
|
89
|
+
[Category of well generated finite complex reflection groups]
|
|
90
|
+
sage: Cat.is_subcategory(ComplexReflectionGroups().Finite().WellGenerated())
|
|
91
|
+
True
|
|
92
|
+
"""
|
|
93
|
+
from sage.categories.complex_reflection_groups import ComplexReflectionGroups
|
|
94
|
+
return [ComplexReflectionGroups().Finite().WellGenerated()]
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Graded Algebras
|
|
4
|
+
"""
|
|
5
|
+
#*****************************************************************************
|
|
6
|
+
# Copyright (C) 2008 Teresa Gomez-Diaz (CNRS) <Teresa.Gomez-Diaz@univ-mlv.fr>
|
|
7
|
+
# 2008-2011 Nicolas M. Thiery <nthiery at users.sf.net>
|
|
8
|
+
#
|
|
9
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
10
|
+
# http://www.gnu.org/licenses/
|
|
11
|
+
#******************************************************************************
|
|
12
|
+
|
|
13
|
+
from sage.categories.graded_modules import GradedModulesCategory
|
|
14
|
+
from sage.categories.signed_tensor import SignedTensorProductsCategory
|
|
15
|
+
from sage.misc.cachefunc import cached_method
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class GradedAlgebras(GradedModulesCategory):
|
|
19
|
+
"""
|
|
20
|
+
The category of graded algebras.
|
|
21
|
+
|
|
22
|
+
EXAMPLES::
|
|
23
|
+
|
|
24
|
+
sage: GradedAlgebras(ZZ)
|
|
25
|
+
Category of graded algebras over Integer Ring
|
|
26
|
+
sage: GradedAlgebras(ZZ).super_categories()
|
|
27
|
+
[Category of filtered algebras over Integer Ring,
|
|
28
|
+
Category of graded modules over Integer Ring]
|
|
29
|
+
|
|
30
|
+
TESTS::
|
|
31
|
+
|
|
32
|
+
sage: TestSuite(GradedAlgebras(ZZ)).run()
|
|
33
|
+
"""
|
|
34
|
+
class ParentMethods:
|
|
35
|
+
def graded_algebra(self):
|
|
36
|
+
"""
|
|
37
|
+
Return the associated graded algebra to ``self``.
|
|
38
|
+
|
|
39
|
+
Since ``self`` is already graded, this just returns
|
|
40
|
+
``self``.
|
|
41
|
+
|
|
42
|
+
EXAMPLES::
|
|
43
|
+
|
|
44
|
+
sage: m = SymmetricFunctions(QQ).m() # needs sage.combinat sage.modules
|
|
45
|
+
sage: m.graded_algebra() is m # needs sage.combinat sage.modules
|
|
46
|
+
True
|
|
47
|
+
"""
|
|
48
|
+
return self
|
|
49
|
+
|
|
50
|
+
class ElementMethods:
|
|
51
|
+
pass
|
|
52
|
+
|
|
53
|
+
class SubcategoryMethods:
|
|
54
|
+
def SignedTensorProducts(self):
|
|
55
|
+
r"""
|
|
56
|
+
Return the full subcategory of objects of ``self`` constructed
|
|
57
|
+
as signed tensor products.
|
|
58
|
+
|
|
59
|
+
.. SEEALSO::
|
|
60
|
+
|
|
61
|
+
- :class:`~sage.categories.signed_tensor.SignedTensorProductsCategory`
|
|
62
|
+
- :class:`~.covariant_functorial_construction.CovariantFunctorialConstruction`
|
|
63
|
+
|
|
64
|
+
EXAMPLES::
|
|
65
|
+
|
|
66
|
+
sage: AlgebrasWithBasis(QQ).Graded().SignedTensorProducts()
|
|
67
|
+
Category of signed tensor products of graded algebras with basis
|
|
68
|
+
over Rational Field
|
|
69
|
+
"""
|
|
70
|
+
return SignedTensorProductsCategory.category_of(self)
|
|
71
|
+
|
|
72
|
+
class SignedTensorProducts(SignedTensorProductsCategory):
|
|
73
|
+
@cached_method
|
|
74
|
+
def extra_super_categories(self):
|
|
75
|
+
"""
|
|
76
|
+
EXAMPLES::
|
|
77
|
+
|
|
78
|
+
sage: Algebras(QQ).Graded().SignedTensorProducts().extra_super_categories()
|
|
79
|
+
[Category of graded algebras over Rational Field]
|
|
80
|
+
sage: Algebras(QQ).Graded().SignedTensorProducts().super_categories()
|
|
81
|
+
[Category of graded algebras over Rational Field]
|
|
82
|
+
|
|
83
|
+
Meaning: a signed tensor product of algebras is an algebra
|
|
84
|
+
"""
|
|
85
|
+
return [self.base_category()]
|