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,138 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
"""
|
|
3
|
+
Graphs
|
|
4
|
+
"""
|
|
5
|
+
#*****************************************************************************
|
|
6
|
+
# Copyright (C) 2015 Travis Scrimshaw <tscrim at ucdavis.edu>
|
|
7
|
+
#
|
|
8
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
9
|
+
# http://www.gnu.org/licenses/
|
|
10
|
+
#******************************************************************************
|
|
11
|
+
|
|
12
|
+
from sage.misc.abstract_method import abstract_method
|
|
13
|
+
from sage.misc.cachefunc import cached_method
|
|
14
|
+
from sage.categories.category_singleton import Category_singleton
|
|
15
|
+
from sage.categories.category_with_axiom import CategoryWithAxiom
|
|
16
|
+
from sage.categories.simplicial_complexes import SimplicialComplexes
|
|
17
|
+
from sage.categories.sets_cat import Sets
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class Graphs(Category_singleton):
|
|
21
|
+
r"""
|
|
22
|
+
The category of graphs.
|
|
23
|
+
|
|
24
|
+
EXAMPLES::
|
|
25
|
+
|
|
26
|
+
sage: from sage.categories.graphs import Graphs
|
|
27
|
+
sage: C = Graphs(); C
|
|
28
|
+
Category of graphs
|
|
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.graphs import Graphs
|
|
40
|
+
sage: Graphs().super_categories()
|
|
41
|
+
[Category of simplicial complexes]
|
|
42
|
+
"""
|
|
43
|
+
return [SimplicialComplexes()]
|
|
44
|
+
|
|
45
|
+
class ParentMethods:
|
|
46
|
+
@abstract_method
|
|
47
|
+
def vertices(self):
|
|
48
|
+
"""
|
|
49
|
+
Return the vertices of ``self``.
|
|
50
|
+
|
|
51
|
+
EXAMPLES::
|
|
52
|
+
|
|
53
|
+
sage: from sage.categories.graphs import Graphs
|
|
54
|
+
sage: C = Graphs().example()
|
|
55
|
+
sage: C.vertices()
|
|
56
|
+
[0, 1, 2, 3, 4]
|
|
57
|
+
"""
|
|
58
|
+
|
|
59
|
+
@abstract_method
|
|
60
|
+
def edges(self):
|
|
61
|
+
"""
|
|
62
|
+
Return the edges of ``self``.
|
|
63
|
+
|
|
64
|
+
EXAMPLES::
|
|
65
|
+
|
|
66
|
+
sage: from sage.categories.graphs import Graphs
|
|
67
|
+
sage: C = Graphs().example()
|
|
68
|
+
sage: C.edges()
|
|
69
|
+
[(0, 1), (1, 2), (2, 3), (3, 4), (4, 0)]
|
|
70
|
+
"""
|
|
71
|
+
|
|
72
|
+
def dimension(self):
|
|
73
|
+
"""
|
|
74
|
+
Return the dimension of ``self`` as a CW complex.
|
|
75
|
+
|
|
76
|
+
EXAMPLES::
|
|
77
|
+
|
|
78
|
+
sage: from sage.categories.graphs import Graphs
|
|
79
|
+
sage: C = Graphs().example()
|
|
80
|
+
sage: C.dimension()
|
|
81
|
+
1
|
|
82
|
+
"""
|
|
83
|
+
if self.edges():
|
|
84
|
+
return 1
|
|
85
|
+
return 0
|
|
86
|
+
|
|
87
|
+
def facets(self):
|
|
88
|
+
"""
|
|
89
|
+
Return the facets of ``self``.
|
|
90
|
+
|
|
91
|
+
EXAMPLES::
|
|
92
|
+
|
|
93
|
+
sage: from sage.categories.graphs import Graphs
|
|
94
|
+
sage: C = Graphs().example()
|
|
95
|
+
sage: C.facets()
|
|
96
|
+
[(0, 1), (1, 2), (2, 3), (3, 4), (4, 0)]
|
|
97
|
+
"""
|
|
98
|
+
return self.edges()
|
|
99
|
+
|
|
100
|
+
def faces(self):
|
|
101
|
+
"""
|
|
102
|
+
Return the faces of ``self``.
|
|
103
|
+
|
|
104
|
+
EXAMPLES::
|
|
105
|
+
|
|
106
|
+
sage: from sage.categories.graphs import Graphs
|
|
107
|
+
sage: C = Graphs().example()
|
|
108
|
+
sage: sorted(C.faces(), key=lambda x: (x.dimension(), x.value))
|
|
109
|
+
[0, 1, 2, 3, 4, (0, 1), (1, 2), (2, 3), (3, 4), (4, 0)]
|
|
110
|
+
"""
|
|
111
|
+
return set(self.edges()).union(self.vertices())
|
|
112
|
+
|
|
113
|
+
class Connected(CategoryWithAxiom):
|
|
114
|
+
"""
|
|
115
|
+
The category of connected graphs.
|
|
116
|
+
|
|
117
|
+
EXAMPLES::
|
|
118
|
+
|
|
119
|
+
sage: from sage.categories.graphs import Graphs
|
|
120
|
+
sage: C = Graphs().Connected()
|
|
121
|
+
sage: TestSuite(C).run()
|
|
122
|
+
"""
|
|
123
|
+
def extra_super_categories(self):
|
|
124
|
+
"""
|
|
125
|
+
Return the extra super categories of ``self``.
|
|
126
|
+
|
|
127
|
+
A connected graph is also a metric space.
|
|
128
|
+
|
|
129
|
+
EXAMPLES::
|
|
130
|
+
|
|
131
|
+
sage: from sage.categories.graphs import Graphs
|
|
132
|
+
sage: Graphs().Connected().super_categories() # indirect doctest
|
|
133
|
+
[Category of connected topological spaces,
|
|
134
|
+
Category of connected simplicial complexes,
|
|
135
|
+
Category of graphs,
|
|
136
|
+
Category of metric spaces]
|
|
137
|
+
"""
|
|
138
|
+
return [Sets().Metric()]
|
|
@@ -0,0 +1,430 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Group Algebras
|
|
4
|
+
|
|
5
|
+
This module implements the category of group algebras for arbitrary
|
|
6
|
+
groups over arbitrary commutative rings. For details, see
|
|
7
|
+
:mod:`sage.categories.algebra_functor`.
|
|
8
|
+
|
|
9
|
+
AUTHOR:
|
|
10
|
+
|
|
11
|
+
- David Loeffler (2008-08-24): initial version
|
|
12
|
+
- Martin Raum (2009-08): update to use new coercion model -- see
|
|
13
|
+
:issue:`6670`.
|
|
14
|
+
- John Palmieri (2011-07): more updates to coercion, categories, etc.,
|
|
15
|
+
group algebras constructed using CombinatorialFreeModule -- see
|
|
16
|
+
:issue:`6670`.
|
|
17
|
+
- Nicolas M. Thiéry (2010-2017), Travis Scrimshaw (2017):
|
|
18
|
+
generalization to a covariant functorial construction for
|
|
19
|
+
monoid algebras, and beyond -- see e.g. :issue:`18700`.
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
#*****************************************************************************
|
|
23
|
+
# Copyright (C) 2005 David Kohel <kohel@maths.usyd.edu>
|
|
24
|
+
# William Stein <wstein@math.ucsd.edu>
|
|
25
|
+
# 2008-2017 Nicolas M. Thiéry <nthiery at users.sf.net>
|
|
26
|
+
#
|
|
27
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
28
|
+
# http://www.gnu.org/licenses/
|
|
29
|
+
#******************************************************************************
|
|
30
|
+
|
|
31
|
+
from sage.misc.cachefunc import cached_method
|
|
32
|
+
from sage.categories.algebra_functor import AlgebrasCategory
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class GroupAlgebras(AlgebrasCategory):
|
|
36
|
+
r"""
|
|
37
|
+
The category of group algebras over a given base ring.
|
|
38
|
+
|
|
39
|
+
EXAMPLES::
|
|
40
|
+
|
|
41
|
+
sage: C = Groups().Algebras(ZZ); C
|
|
42
|
+
Category of group algebras over Integer Ring
|
|
43
|
+
sage: C.super_categories()
|
|
44
|
+
[Category of Hopf algebras with basis over Integer Ring,
|
|
45
|
+
Category of monoid algebras over Integer Ring]
|
|
46
|
+
|
|
47
|
+
We can also construct this category with::
|
|
48
|
+
|
|
49
|
+
sage: C is GroupAlgebras(ZZ)
|
|
50
|
+
True
|
|
51
|
+
|
|
52
|
+
Here is how to create the group algebra of a group `G`::
|
|
53
|
+
|
|
54
|
+
sage: G = DihedralGroup(5) # needs sage.groups
|
|
55
|
+
sage: QG = G.algebra(QQ); QG # needs sage.groups sage.modules
|
|
56
|
+
Algebra of
|
|
57
|
+
Dihedral group of order 10 as a permutation group over Rational Field
|
|
58
|
+
|
|
59
|
+
and an example of computation::
|
|
60
|
+
|
|
61
|
+
sage: g = G.an_element(); g # needs sage.groups sage.modules
|
|
62
|
+
(1,4)(2,3)
|
|
63
|
+
sage: (QG.term(g) + 1)**3 # needs sage.groups sage.modules
|
|
64
|
+
4*() + 4*(1,4)(2,3)
|
|
65
|
+
|
|
66
|
+
.. TODO::
|
|
67
|
+
|
|
68
|
+
- Check which methods would be better located in
|
|
69
|
+
``Monoid.Algebras`` or ``Groups.Finite.Algebras``.
|
|
70
|
+
|
|
71
|
+
TESTS::
|
|
72
|
+
|
|
73
|
+
sage: # needs sage.groups sage.modules
|
|
74
|
+
sage: A = GroupAlgebras(QQ).example(GL(3, GF(11)))
|
|
75
|
+
sage: A.one_basis()
|
|
76
|
+
[1 0 0]
|
|
77
|
+
[0 1 0]
|
|
78
|
+
[0 0 1]
|
|
79
|
+
sage: A = SymmetricGroupAlgebra(QQ, 4) # needs sage.combinat
|
|
80
|
+
sage: x = Permutation([4,3,2,1])
|
|
81
|
+
sage: A.product_on_basis(x, x) # needs sage.combinat
|
|
82
|
+
[1, 2, 3, 4]
|
|
83
|
+
|
|
84
|
+
sage: C = GroupAlgebras(ZZ)
|
|
85
|
+
sage: TestSuite(C).run()
|
|
86
|
+
"""
|
|
87
|
+
def extra_super_categories(self):
|
|
88
|
+
"""
|
|
89
|
+
Implement the fact that the algebra of a group is a Hopf
|
|
90
|
+
algebra.
|
|
91
|
+
|
|
92
|
+
EXAMPLES::
|
|
93
|
+
|
|
94
|
+
sage: C = Groups().Algebras(QQ)
|
|
95
|
+
sage: C.extra_super_categories()
|
|
96
|
+
[Category of Hopf algebras over Rational Field]
|
|
97
|
+
sage: sorted(C.super_categories(), key=str)
|
|
98
|
+
[Category of Hopf algebras with basis over Rational Field,
|
|
99
|
+
Category of monoid algebras over Rational Field]
|
|
100
|
+
"""
|
|
101
|
+
from sage.categories.hopf_algebras import HopfAlgebras
|
|
102
|
+
return [HopfAlgebras(self.base_ring())]
|
|
103
|
+
|
|
104
|
+
def example(self, G=None):
|
|
105
|
+
"""
|
|
106
|
+
Return an example of group algebra.
|
|
107
|
+
|
|
108
|
+
EXAMPLES::
|
|
109
|
+
|
|
110
|
+
sage: GroupAlgebras(QQ['x']).example() # needs sage.groups sage.modules
|
|
111
|
+
Algebra of Dihedral group of order 8 as a permutation group
|
|
112
|
+
over Univariate Polynomial Ring in x over Rational Field
|
|
113
|
+
|
|
114
|
+
An other group can be specified as optional argument::
|
|
115
|
+
|
|
116
|
+
sage: GroupAlgebras(QQ).example(AlternatingGroup(4)) # needs sage.groups sage.modules
|
|
117
|
+
Algebra of
|
|
118
|
+
Alternating group of order 4!/2 as a permutation group over Rational Field
|
|
119
|
+
"""
|
|
120
|
+
from sage.groups.perm_gps.permgroup_named import DihedralGroup
|
|
121
|
+
if G is None:
|
|
122
|
+
G = DihedralGroup(4)
|
|
123
|
+
return G.algebra(self.base_ring())
|
|
124
|
+
|
|
125
|
+
class ParentMethods:
|
|
126
|
+
def __init_extra__(self):
|
|
127
|
+
"""
|
|
128
|
+
Enable coercion from the defining group.
|
|
129
|
+
|
|
130
|
+
EXAMPLES::
|
|
131
|
+
|
|
132
|
+
sage: # needs sage.combinat sage.groups sage.modules
|
|
133
|
+
sage: A = GroupAlgebra(SymmetricGroup(4), QQ)
|
|
134
|
+
sage: B = GroupAlgebra(SymmetricGroup(3), ZZ)
|
|
135
|
+
sage: A.has_coerce_map_from(B)
|
|
136
|
+
True
|
|
137
|
+
sage: B.has_coerce_map_from(A)
|
|
138
|
+
False
|
|
139
|
+
sage: A.has_coerce_map_from(ZZ)
|
|
140
|
+
True
|
|
141
|
+
sage: A.has_coerce_map_from(CC)
|
|
142
|
+
False
|
|
143
|
+
sage: A.has_coerce_map_from(SymmetricGroup(5))
|
|
144
|
+
False
|
|
145
|
+
sage: A.has_coerce_map_from(SymmetricGroup(2))
|
|
146
|
+
True
|
|
147
|
+
"""
|
|
148
|
+
if not self.base_ring().has_coerce_map_from(self.group()):
|
|
149
|
+
## some matrix groups assume that coercion is only valid to
|
|
150
|
+
## other matrix groups. This is a workaround
|
|
151
|
+
## call _element_constructor_ to coerce group elements
|
|
152
|
+
#try:
|
|
153
|
+
self._populate_coercion_lists_(coerce_list=[self.group()])
|
|
154
|
+
|
|
155
|
+
def _latex_(self):
|
|
156
|
+
r"""
|
|
157
|
+
Latex string of ``self``.
|
|
158
|
+
|
|
159
|
+
EXAMPLES::
|
|
160
|
+
|
|
161
|
+
sage: A = GroupAlgebra(KleinFourGroup(), ZZ) # needs sage.groups sage.modules
|
|
162
|
+
sage: latex(A) # indirect doctest # needs sage.groups sage.modules
|
|
163
|
+
\Bold{Z}[\langle (3,4), (1,2) \rangle]
|
|
164
|
+
"""
|
|
165
|
+
from sage.misc.latex import latex
|
|
166
|
+
return "%s[%s]" % (latex(self.base_ring()), latex(self.group()))
|
|
167
|
+
|
|
168
|
+
def group(self):
|
|
169
|
+
r"""
|
|
170
|
+
Return the underlying group of the group algebra.
|
|
171
|
+
|
|
172
|
+
EXAMPLES::
|
|
173
|
+
|
|
174
|
+
sage: GroupAlgebras(QQ).example(GL(3, GF(11))).group() # needs sage.groups sage.modules
|
|
175
|
+
General Linear Group of degree 3 over Finite Field of size 11
|
|
176
|
+
sage: SymmetricGroup(10).algebra(QQ).group() # needs sage.combinat sage.groups sage.modules
|
|
177
|
+
Symmetric group of order 10! as a permutation group
|
|
178
|
+
"""
|
|
179
|
+
return self.basis().keys()
|
|
180
|
+
|
|
181
|
+
@cached_method
|
|
182
|
+
def center_basis(self):
|
|
183
|
+
r"""
|
|
184
|
+
Return a basis of the center of the group algebra.
|
|
185
|
+
|
|
186
|
+
The canonical basis of the center of the group algebra
|
|
187
|
+
is the family `(f_\sigma)_{\sigma\in C}`, where `C` is
|
|
188
|
+
any collection of representatives of the conjugacy
|
|
189
|
+
classes of the group, and `f_\sigma` is the sum of the
|
|
190
|
+
elements in the conjugacy class of `\sigma`.
|
|
191
|
+
|
|
192
|
+
OUTPUT: tuple of elements of ``self``
|
|
193
|
+
|
|
194
|
+
.. WARNING::
|
|
195
|
+
|
|
196
|
+
- This method requires the underlying group to
|
|
197
|
+
have a method ``conjugacy_classes``
|
|
198
|
+
(every permutation group has one, thanks GAP!).
|
|
199
|
+
|
|
200
|
+
EXAMPLES::
|
|
201
|
+
|
|
202
|
+
sage: SymmetricGroup(3).algebra(QQ).center_basis() # needs sage.combinat sage.groups sage.modules
|
|
203
|
+
((), (2,3) + (1,2) + (1,3), (1,2,3) + (1,3,2))
|
|
204
|
+
|
|
205
|
+
.. SEEALSO::
|
|
206
|
+
|
|
207
|
+
- :meth:`Groups.Algebras.ElementMethods.central_form`
|
|
208
|
+
- :meth:`Monoids.Algebras.ElementMethods.is_central`
|
|
209
|
+
"""
|
|
210
|
+
return tuple([self.sum_of_monomials(conj) for conj in
|
|
211
|
+
self.basis().keys().conjugacy_classes()])
|
|
212
|
+
|
|
213
|
+
# Hopf algebra structure
|
|
214
|
+
|
|
215
|
+
def coproduct_on_basis(self, g):
|
|
216
|
+
r"""
|
|
217
|
+
Return the coproduct of the element ``g`` of the basis.
|
|
218
|
+
|
|
219
|
+
Each basis element ``g`` is group-like. This method is
|
|
220
|
+
used to compute the coproduct of any element.
|
|
221
|
+
|
|
222
|
+
EXAMPLES::
|
|
223
|
+
|
|
224
|
+
sage: # needs sage.groups sage.modules
|
|
225
|
+
sage: A = CyclicPermutationGroup(6).algebra(ZZ); A
|
|
226
|
+
Algebra of
|
|
227
|
+
Cyclic group of order 6 as a permutation group over Integer Ring
|
|
228
|
+
sage: g = CyclicPermutationGroup(6).an_element(); g
|
|
229
|
+
(1,2,3,4,5,6)
|
|
230
|
+
sage: A.coproduct_on_basis(g)
|
|
231
|
+
(1,2,3,4,5,6) # (1,2,3,4,5,6)
|
|
232
|
+
sage: a = A.an_element(); a
|
|
233
|
+
() + 3*(1,2,3,4,5,6) + 3*(1,3,5)(2,4,6)
|
|
234
|
+
sage: a.coproduct()
|
|
235
|
+
() # () + 3*(1,2,3,4,5,6) # (1,2,3,4,5,6) + 3*(1,3,5)(2,4,6) # (1,3,5)(2,4,6)
|
|
236
|
+
"""
|
|
237
|
+
from sage.categories.tensor import tensor
|
|
238
|
+
g = self.term(g)
|
|
239
|
+
return tensor([g, g])
|
|
240
|
+
|
|
241
|
+
def antipode_on_basis(self, g):
|
|
242
|
+
r"""
|
|
243
|
+
Return the antipode of the element ``g`` of the basis.
|
|
244
|
+
|
|
245
|
+
Each basis element ``g`` is group-like, and so has
|
|
246
|
+
antipode `g^{-1}`. This method is used to compute the
|
|
247
|
+
antipode of any element.
|
|
248
|
+
|
|
249
|
+
EXAMPLES::
|
|
250
|
+
|
|
251
|
+
sage: # needs sage.groups sage.modules
|
|
252
|
+
sage: A = CyclicPermutationGroup(6).algebra(ZZ); A
|
|
253
|
+
Algebra of
|
|
254
|
+
Cyclic group of order 6 as a permutation group over Integer Ring
|
|
255
|
+
sage: g = CyclicPermutationGroup(6).an_element(); g
|
|
256
|
+
(1,2,3,4,5,6)
|
|
257
|
+
sage: A.antipode_on_basis(g)
|
|
258
|
+
(1,6,5,4,3,2)
|
|
259
|
+
sage: a = A.an_element(); a
|
|
260
|
+
() + 3*(1,2,3,4,5,6) + 3*(1,3,5)(2,4,6)
|
|
261
|
+
sage: a.antipode()
|
|
262
|
+
() + 3*(1,5,3)(2,6,4) + 3*(1,6,5,4,3,2)
|
|
263
|
+
"""
|
|
264
|
+
return self.term(~g)
|
|
265
|
+
|
|
266
|
+
def counit_on_basis(self, g):
|
|
267
|
+
r"""
|
|
268
|
+
Return the counit of the element ``g`` of the basis.
|
|
269
|
+
|
|
270
|
+
Each basis element ``g`` is group-like, and so has
|
|
271
|
+
counit `1`. This method is used to compute the
|
|
272
|
+
counit of any element.
|
|
273
|
+
|
|
274
|
+
EXAMPLES::
|
|
275
|
+
|
|
276
|
+
sage: A = CyclicPermutationGroup(6).algebra(ZZ); A # needs sage.groups sage.modules
|
|
277
|
+
Algebra of
|
|
278
|
+
Cyclic group of order 6 as a permutation group over Integer Ring
|
|
279
|
+
sage: g = CyclicPermutationGroup(6).an_element(); g # needs sage.groups sage.modules
|
|
280
|
+
(1,2,3,4,5,6)
|
|
281
|
+
sage: A.counit_on_basis(g) # needs sage.groups sage.modules
|
|
282
|
+
1
|
|
283
|
+
"""
|
|
284
|
+
return self.base_ring().one()
|
|
285
|
+
|
|
286
|
+
def counit(self, x):
|
|
287
|
+
r"""
|
|
288
|
+
Return the counit of the element ``x`` of the group
|
|
289
|
+
algebra.
|
|
290
|
+
|
|
291
|
+
This is the sum of all coefficients of ``x`` with respect
|
|
292
|
+
to the standard basis of the group algebra.
|
|
293
|
+
|
|
294
|
+
EXAMPLES::
|
|
295
|
+
|
|
296
|
+
sage: A = CyclicPermutationGroup(6).algebra(ZZ); A # needs sage.groups sage.modules
|
|
297
|
+
Algebra of
|
|
298
|
+
Cyclic group of order 6 as a permutation group over Integer Ring
|
|
299
|
+
sage: a = A.an_element(); a # needs sage.groups sage.modules
|
|
300
|
+
() + 3*(1,2,3,4,5,6) + 3*(1,3,5)(2,4,6)
|
|
301
|
+
sage: a.counit() # needs sage.groups sage.modules
|
|
302
|
+
7
|
|
303
|
+
"""
|
|
304
|
+
return self.base_ring().sum(x.coefficients())
|
|
305
|
+
|
|
306
|
+
def is_integral_domain(self, proof=True):
|
|
307
|
+
r"""
|
|
308
|
+
Return ``True`` if ``self`` is an integral domain.
|
|
309
|
+
|
|
310
|
+
This is false unless ``self.base_ring()`` is an integral
|
|
311
|
+
domain, and even then it is false unless ``self.group()``
|
|
312
|
+
has no nontrivial elements of finite order. I don't know
|
|
313
|
+
if this condition suffices, but it obviously does if the
|
|
314
|
+
group is abelian and finitely generated.
|
|
315
|
+
|
|
316
|
+
EXAMPLES::
|
|
317
|
+
|
|
318
|
+
sage: # needs sage.groups sage.modules
|
|
319
|
+
sage: S2 = SymmetricGroup(2)
|
|
320
|
+
sage: GroupAlgebra(S2).is_integral_domain() # needs sage.combinat
|
|
321
|
+
False
|
|
322
|
+
sage: S1 = SymmetricGroup(1)
|
|
323
|
+
sage: GroupAlgebra(S1).is_integral_domain() # needs sage.combinat
|
|
324
|
+
True
|
|
325
|
+
sage: GroupAlgebra(S1, IntegerModRing(4)).is_integral_domain() # needs sage.combinat
|
|
326
|
+
False
|
|
327
|
+
sage: GroupAlgebra(AbelianGroup(1)).is_integral_domain()
|
|
328
|
+
True
|
|
329
|
+
sage: GroupAlgebra(AbelianGroup(2, [0,2])).is_integral_domain()
|
|
330
|
+
False
|
|
331
|
+
sage: GroupAlgebra(GL(2, ZZ)).is_integral_domain() # not implemented
|
|
332
|
+
False
|
|
333
|
+
"""
|
|
334
|
+
from sage.sets.set import Set
|
|
335
|
+
ans = False
|
|
336
|
+
try:
|
|
337
|
+
if self.base_ring().is_integral_domain():
|
|
338
|
+
if self.group().is_finite():
|
|
339
|
+
if self.group().order() > 1:
|
|
340
|
+
ans = False
|
|
341
|
+
else:
|
|
342
|
+
ans = True
|
|
343
|
+
else:
|
|
344
|
+
if self.group().is_abelian():
|
|
345
|
+
invs = self.group().invariants()
|
|
346
|
+
if Set(invs) != Set([0]):
|
|
347
|
+
ans = False
|
|
348
|
+
else:
|
|
349
|
+
ans = True
|
|
350
|
+
else:
|
|
351
|
+
raise NotImplementedError
|
|
352
|
+
else:
|
|
353
|
+
ans = False
|
|
354
|
+
except (AttributeError, NotImplementedError):
|
|
355
|
+
if proof:
|
|
356
|
+
raise NotImplementedError("cannot determine whether self is an integral domain")
|
|
357
|
+
|
|
358
|
+
return ans
|
|
359
|
+
|
|
360
|
+
# I haven't written is_noetherian(), because I don't know when group
|
|
361
|
+
# algebras are Noetherian, and I haven't written is_prime_field(), because
|
|
362
|
+
# I don't know if that means "is canonically isomorphic to a prime field"
|
|
363
|
+
# or "is identical to a prime field".
|
|
364
|
+
|
|
365
|
+
class ElementMethods:
|
|
366
|
+
|
|
367
|
+
def central_form(self):
|
|
368
|
+
r"""
|
|
369
|
+
Return ``self`` expressed in the canonical basis of the center
|
|
370
|
+
of the group algebra.
|
|
371
|
+
|
|
372
|
+
INPUT:
|
|
373
|
+
|
|
374
|
+
- ``self`` -- an element of the center of the group algebra
|
|
375
|
+
|
|
376
|
+
OUTPUT:
|
|
377
|
+
|
|
378
|
+
- A formal linear combination of the conjugacy class
|
|
379
|
+
representatives representing its coordinates in the
|
|
380
|
+
canonical basis of the center. See
|
|
381
|
+
:meth:`Groups.Algebras.ParentMethods.center_basis` for
|
|
382
|
+
details.
|
|
383
|
+
|
|
384
|
+
.. WARNING::
|
|
385
|
+
|
|
386
|
+
- This method requires the underlying group to
|
|
387
|
+
have a method ``conjugacy_classes_representatives``
|
|
388
|
+
(every permutation group has one, thanks GAP!).
|
|
389
|
+
- This method does not check that the element is
|
|
390
|
+
indeed central. Use the method
|
|
391
|
+
:meth:`Monoids.Algebras.ElementMethods.is_central`
|
|
392
|
+
for this purpose.
|
|
393
|
+
- This function has a complexity linear in the
|
|
394
|
+
number of conjugacy classes of the group. One
|
|
395
|
+
could easily implement a function whose
|
|
396
|
+
complexity is linear in the size of the support
|
|
397
|
+
of ``self``.
|
|
398
|
+
|
|
399
|
+
EXAMPLES::
|
|
400
|
+
|
|
401
|
+
sage: # needs sage.combinat sage.groups sage.modules
|
|
402
|
+
sage: QS3 = SymmetricGroup(3).algebra(QQ)
|
|
403
|
+
sage: A = QS3([2,3,1]) + QS3([3,1,2])
|
|
404
|
+
sage: A.central_form()
|
|
405
|
+
B[(1,2,3)]
|
|
406
|
+
sage: QS4 = SymmetricGroup(4).algebra(QQ)
|
|
407
|
+
sage: B = sum(len(s.cycle_type()) * QS4(s) for s in Permutations(4))
|
|
408
|
+
sage: B.central_form()
|
|
409
|
+
4*B[()] + 3*B[(1,2)] + 2*B[(1,2)(3,4)] + 2*B[(1,2,3)] + B[(1,2,3,4)]
|
|
410
|
+
|
|
411
|
+
The following test fails due to a bug involving combinatorial free modules and
|
|
412
|
+
the coercion system (see :issue:`28544`)::
|
|
413
|
+
|
|
414
|
+
sage: # needs sage.groups sage.modules
|
|
415
|
+
sage: G = PermutationGroup([[(1,2,3),(4,5)], [(3,4)]])
|
|
416
|
+
sage: QG = GroupAlgebras(QQ).example(G)
|
|
417
|
+
sage: s = sum(QG.basis())
|
|
418
|
+
sage: s.central_form() # not tested
|
|
419
|
+
B[()] + B[(4,5)] + B[(3,4,5)] + B[(2,3)(4,5)]
|
|
420
|
+
+ B[(2,3,4,5)] + B[(1,2)(3,4,5)] + B[(1,2,3,4,5)]
|
|
421
|
+
|
|
422
|
+
.. SEEALSO::
|
|
423
|
+
|
|
424
|
+
- :meth:`Groups.Algebras.ParentMethods.center_basis`
|
|
425
|
+
- :meth:`Monoids.Algebras.ElementMethods.is_central`
|
|
426
|
+
"""
|
|
427
|
+
from sage.combinat.free_module import CombinatorialFreeModule
|
|
428
|
+
conj_classes_reps = self.parent().basis().keys().conjugacy_classes_representatives()
|
|
429
|
+
Z = CombinatorialFreeModule(self.base_ring(), conj_classes_reps)
|
|
430
|
+
return sum(self[i] * Z.basis()[i] for i in Z.basis().keys())
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
# sage.doctest: needs sage.groups
|
|
3
|
+
r"""
|
|
4
|
+
Groupoid
|
|
5
|
+
"""
|
|
6
|
+
#*****************************************************************************
|
|
7
|
+
# Copyright (C) 2008 David Kohel <kohel@maths.usyd.edu> and
|
|
8
|
+
# William Stein <wstein@math.ucsd.edu>
|
|
9
|
+
# 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 CategoryWithParameters
|
|
16
|
+
from sage.categories.sets_cat import Sets
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class Groupoid(CategoryWithParameters):
|
|
20
|
+
"""
|
|
21
|
+
The category of groupoids, for a set (usually a group) `G`.
|
|
22
|
+
|
|
23
|
+
FIXME:
|
|
24
|
+
|
|
25
|
+
- Groupoid or Groupoids ?
|
|
26
|
+
- definition and link with :wikipedia:`Groupoid`
|
|
27
|
+
- Should Groupoid inherit from Category_over_base?
|
|
28
|
+
|
|
29
|
+
EXAMPLES::
|
|
30
|
+
|
|
31
|
+
sage: Groupoid(DihedralGroup(3))
|
|
32
|
+
Groupoid with underlying set Dihedral group of order 6 as a permutation group
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
def __init__(self, G=None):
|
|
36
|
+
"""
|
|
37
|
+
TESTS::
|
|
38
|
+
|
|
39
|
+
sage: S8 = SymmetricGroup(8)
|
|
40
|
+
sage: C = Groupoid(S8)
|
|
41
|
+
sage: TestSuite(C).run()
|
|
42
|
+
"""
|
|
43
|
+
CategoryWithParameters.__init__(self) # "Groupoid")
|
|
44
|
+
if G is None:
|
|
45
|
+
from sage.groups.perm_gps.permgroup_named import SymmetricGroup
|
|
46
|
+
G = SymmetricGroup(8)
|
|
47
|
+
self.__G = G
|
|
48
|
+
|
|
49
|
+
def _repr_(self):
|
|
50
|
+
"""
|
|
51
|
+
EXAMPLES::
|
|
52
|
+
|
|
53
|
+
sage: S8 = SymmetricGroup(8)
|
|
54
|
+
sage: Groupoid(S8)
|
|
55
|
+
Groupoid with underlying set Symmetric group of order 8! as a permutation group
|
|
56
|
+
"""
|
|
57
|
+
return "Groupoid with underlying set %s" % self.__G
|
|
58
|
+
|
|
59
|
+
# def construction(self):
|
|
60
|
+
# return (self.__class__, self.__G)
|
|
61
|
+
|
|
62
|
+
def _make_named_class_key(self, name):
|
|
63
|
+
"""
|
|
64
|
+
The parent/element classes of all groupoids coincide.
|
|
65
|
+
|
|
66
|
+
EXAMPLES::
|
|
67
|
+
|
|
68
|
+
sage: Groupoid(DihedralGroup(3)).parent_class is Groupoid(ZZ).parent_class
|
|
69
|
+
True
|
|
70
|
+
"""
|
|
71
|
+
return None
|
|
72
|
+
|
|
73
|
+
def super_categories(self):
|
|
74
|
+
"""
|
|
75
|
+
EXAMPLES::
|
|
76
|
+
|
|
77
|
+
sage: Groupoid(DihedralGroup(3)).super_categories()
|
|
78
|
+
[Category of sets]
|
|
79
|
+
"""
|
|
80
|
+
return [Sets()] # ???
|
|
81
|
+
|
|
82
|
+
@classmethod
|
|
83
|
+
def an_instance(cls):
|
|
84
|
+
"""
|
|
85
|
+
Return an instance of this class.
|
|
86
|
+
|
|
87
|
+
EXAMPLES::
|
|
88
|
+
|
|
89
|
+
sage: Groupoid.an_instance() # indirect doctest
|
|
90
|
+
Groupoid with underlying set Symmetric group of order 8! as a permutation group
|
|
91
|
+
"""
|
|
92
|
+
from sage.groups.perm_gps.permgroup_named import SymmetricGroup
|
|
93
|
+
G = SymmetricGroup(8)
|
|
94
|
+
return cls(G)
|