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,114 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Additive monoids
|
|
4
|
+
"""
|
|
5
|
+
#*****************************************************************************
|
|
6
|
+
# Copyright (C) 2013-2014 Nicolas M. Thiery <nthiery at users.sf.net>
|
|
7
|
+
#
|
|
8
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
9
|
+
# http://www.gnu.org/licenses/
|
|
10
|
+
#******************************************************************************
|
|
11
|
+
|
|
12
|
+
from sage.misc.lazy_import import LazyImport
|
|
13
|
+
from sage.categories.category_with_axiom import CategoryWithAxiom_singleton
|
|
14
|
+
from sage.categories.additive_semigroups import AdditiveSemigroups
|
|
15
|
+
from sage.categories.homsets import HomsetsCategory
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class AdditiveMonoids(CategoryWithAxiom_singleton):
|
|
19
|
+
"""
|
|
20
|
+
The category of additive monoids.
|
|
21
|
+
|
|
22
|
+
An *additive monoid* is a unital :class:`additive semigroup
|
|
23
|
+
<sage.categories.additive_semigroups.AdditiveSemigroups>`, that
|
|
24
|
+
is a set endowed with a binary operation `+` which is associative
|
|
25
|
+
and admits a zero (see :wikipedia:`Monoid`).
|
|
26
|
+
|
|
27
|
+
EXAMPLES::
|
|
28
|
+
|
|
29
|
+
sage: from sage.categories.additive_monoids import AdditiveMonoids
|
|
30
|
+
sage: C = AdditiveMonoids(); C
|
|
31
|
+
Category of additive monoids
|
|
32
|
+
sage: C.super_categories()
|
|
33
|
+
[Category of additive unital additive magmas, Category of additive semigroups]
|
|
34
|
+
sage: sorted(C.axioms())
|
|
35
|
+
['AdditiveAssociative', 'AdditiveUnital']
|
|
36
|
+
sage: from sage.categories.additive_semigroups import AdditiveSemigroups
|
|
37
|
+
sage: C is AdditiveSemigroups().AdditiveUnital()
|
|
38
|
+
True
|
|
39
|
+
|
|
40
|
+
TESTS::
|
|
41
|
+
|
|
42
|
+
sage: C.Algebras(QQ).is_subcategory(AlgebrasWithBasis(QQ))
|
|
43
|
+
True
|
|
44
|
+
sage: TestSuite(C).run()
|
|
45
|
+
"""
|
|
46
|
+
_base_category_class_and_axiom = (AdditiveSemigroups, "AdditiveUnital")
|
|
47
|
+
|
|
48
|
+
def __lean_init__(self):
|
|
49
|
+
return 'add_monoid'
|
|
50
|
+
|
|
51
|
+
AdditiveCommutative = LazyImport('sage.categories.commutative_additive_monoids', 'CommutativeAdditiveMonoids', at_startup=True)
|
|
52
|
+
AdditiveInverse = LazyImport('sage.categories.additive_groups', 'AdditiveGroups', at_startup=True)
|
|
53
|
+
|
|
54
|
+
class ParentMethods:
|
|
55
|
+
def sum(self, args):
|
|
56
|
+
r"""
|
|
57
|
+
Return the sum of the elements in ``args``, as an element
|
|
58
|
+
of ``self``.
|
|
59
|
+
|
|
60
|
+
INPUT:
|
|
61
|
+
|
|
62
|
+
- ``args`` -- list (or iterable) of elements of ``self``
|
|
63
|
+
|
|
64
|
+
EXAMPLES::
|
|
65
|
+
|
|
66
|
+
sage: S = CommutativeAdditiveMonoids().example()
|
|
67
|
+
sage: (a,b,c,d) = S.additive_semigroup_generators()
|
|
68
|
+
sage: S.sum((a,b,a,c,a,b))
|
|
69
|
+
3*a + 2*b + c
|
|
70
|
+
sage: S.sum(())
|
|
71
|
+
0
|
|
72
|
+
sage: S.sum(()).parent() == S
|
|
73
|
+
True
|
|
74
|
+
|
|
75
|
+
TESTS:
|
|
76
|
+
|
|
77
|
+
The following should be reasonably fast (0.5s each)::
|
|
78
|
+
|
|
79
|
+
sage: R.<x,y> = QQ[]
|
|
80
|
+
sage: ignore = R.sum(
|
|
81
|
+
....: QQ.random_element()*x^i*y^j for i in range(200) for j in range(200))
|
|
82
|
+
sage: ignore = R.sum([
|
|
83
|
+
....: QQ.random_element()*x^i*y^j for i in range(200) for j in range(200)])
|
|
84
|
+
|
|
85
|
+
Summing an empty iterator::
|
|
86
|
+
|
|
87
|
+
sage: R.sum(1 for i in range(0))
|
|
88
|
+
0
|
|
89
|
+
"""
|
|
90
|
+
from sage.misc.misc_c import balanced_sum
|
|
91
|
+
return balanced_sum(args, self.zero(), 20)
|
|
92
|
+
|
|
93
|
+
class Homsets(HomsetsCategory):
|
|
94
|
+
|
|
95
|
+
def extra_super_categories(self):
|
|
96
|
+
"""
|
|
97
|
+
Implement the fact that a homset between two monoids is
|
|
98
|
+
associative.
|
|
99
|
+
|
|
100
|
+
EXAMPLES::
|
|
101
|
+
|
|
102
|
+
sage: from sage.categories.additive_monoids import AdditiveMonoids
|
|
103
|
+
sage: AdditiveMonoids().Homsets().extra_super_categories()
|
|
104
|
+
[Category of additive semigroups]
|
|
105
|
+
sage: AdditiveMonoids().Homsets().super_categories()
|
|
106
|
+
[Category of homsets of additive unital additive magmas, Category of additive monoids]
|
|
107
|
+
|
|
108
|
+
.. TODO::
|
|
109
|
+
|
|
110
|
+
This could be deduced from
|
|
111
|
+
:meth:`AdditiveSemigroups.Homsets.extra_super_categories`.
|
|
112
|
+
See comment in :meth:`Objects.SubcategoryMethods.Homsets`.
|
|
113
|
+
"""
|
|
114
|
+
return [AdditiveSemigroups()]
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Additive semigroups
|
|
4
|
+
"""
|
|
5
|
+
# ****************************************************************************
|
|
6
|
+
# Copyright (C) 2013 Nicolas M. Thiery <nthiery at users.sf.net>
|
|
7
|
+
#
|
|
8
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
9
|
+
# https://www.gnu.org/licenses/
|
|
10
|
+
# *****************************************************************************
|
|
11
|
+
|
|
12
|
+
from sage.misc.cachefunc import cached_method
|
|
13
|
+
from sage.misc.lazy_import import LazyImport
|
|
14
|
+
from sage.categories.category_with_axiom import CategoryWithAxiom_singleton
|
|
15
|
+
from sage.categories.cartesian_product import CartesianProductsCategory
|
|
16
|
+
from sage.categories.algebra_functor import AlgebrasCategory
|
|
17
|
+
from sage.categories.homsets import HomsetsCategory
|
|
18
|
+
from sage.categories.additive_magmas import AdditiveMagmas
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class AdditiveSemigroups(CategoryWithAxiom_singleton):
|
|
22
|
+
"""
|
|
23
|
+
The category of additive semigroups.
|
|
24
|
+
|
|
25
|
+
An *additive semigroup* is an associative :class:`additive magma
|
|
26
|
+
<AdditiveMagmas>`, that is a set endowed with an operation `+`
|
|
27
|
+
which is associative.
|
|
28
|
+
|
|
29
|
+
EXAMPLES::
|
|
30
|
+
|
|
31
|
+
sage: from sage.categories.additive_semigroups import AdditiveSemigroups
|
|
32
|
+
sage: C = AdditiveSemigroups(); C
|
|
33
|
+
Category of additive semigroups
|
|
34
|
+
sage: C.super_categories()
|
|
35
|
+
[Category of additive magmas]
|
|
36
|
+
sage: C.all_super_categories()
|
|
37
|
+
[Category of additive semigroups,
|
|
38
|
+
Category of additive magmas,
|
|
39
|
+
Category of sets,
|
|
40
|
+
Category of sets with partial maps,
|
|
41
|
+
Category of objects]
|
|
42
|
+
|
|
43
|
+
sage: C.axioms()
|
|
44
|
+
frozenset({'AdditiveAssociative'})
|
|
45
|
+
sage: C is AdditiveMagmas().AdditiveAssociative()
|
|
46
|
+
True
|
|
47
|
+
|
|
48
|
+
TESTS::
|
|
49
|
+
|
|
50
|
+
sage: TestSuite(C).run()
|
|
51
|
+
"""
|
|
52
|
+
_base_category_class_and_axiom = (AdditiveMagmas, "AdditiveAssociative")
|
|
53
|
+
|
|
54
|
+
def __lean_init__(self):
|
|
55
|
+
return 'add_semigroup'
|
|
56
|
+
|
|
57
|
+
AdditiveCommutative = LazyImport('sage.categories.commutative_additive_semigroups', 'CommutativeAdditiveSemigroups', at_startup=True)
|
|
58
|
+
AdditiveUnital = LazyImport('sage.categories.additive_monoids', 'AdditiveMonoids', at_startup=True)
|
|
59
|
+
|
|
60
|
+
class ParentMethods:
|
|
61
|
+
def _test_additive_associativity(self, **options):
|
|
62
|
+
r"""
|
|
63
|
+
Test associativity for (not necessarily all) elements of this
|
|
64
|
+
additive semigroup.
|
|
65
|
+
|
|
66
|
+
INPUT:
|
|
67
|
+
|
|
68
|
+
- ``options`` -- any keyword arguments accepted by :meth:`_tester`
|
|
69
|
+
|
|
70
|
+
EXAMPLES:
|
|
71
|
+
|
|
72
|
+
By default, this method tests only the elements returned by
|
|
73
|
+
``self.some_elements()``::
|
|
74
|
+
|
|
75
|
+
sage: S = CommutativeAdditiveSemigroups().example()
|
|
76
|
+
sage: S._test_additive_associativity()
|
|
77
|
+
|
|
78
|
+
However, the elements tested can be customized with the
|
|
79
|
+
``elements`` keyword argument::
|
|
80
|
+
|
|
81
|
+
sage: (a,b,c,d) = S.additive_semigroup_generators()
|
|
82
|
+
sage: S._test_additive_associativity(elements = (a, b+c, d))
|
|
83
|
+
|
|
84
|
+
See the documentation for :class:`TestSuite` for more information.
|
|
85
|
+
"""
|
|
86
|
+
tester = self._tester(**options)
|
|
87
|
+
S = tester.some_elements()
|
|
88
|
+
from sage.misc.misc import some_tuples
|
|
89
|
+
for x, y, z in some_tuples(S, 3, tester._max_runs):
|
|
90
|
+
tester.assertEqual((x + y) + z, x + (y + z))
|
|
91
|
+
|
|
92
|
+
class Homsets(HomsetsCategory):
|
|
93
|
+
|
|
94
|
+
def extra_super_categories(self):
|
|
95
|
+
r"""
|
|
96
|
+
Implement the fact that a homset between two semigroups is a
|
|
97
|
+
semigroup.
|
|
98
|
+
|
|
99
|
+
EXAMPLES::
|
|
100
|
+
|
|
101
|
+
sage: from sage.categories.additive_semigroups import AdditiveSemigroups
|
|
102
|
+
sage: AdditiveSemigroups().Homsets().extra_super_categories()
|
|
103
|
+
[Category of additive semigroups]
|
|
104
|
+
sage: AdditiveSemigroups().Homsets().super_categories()
|
|
105
|
+
[Category of homsets of additive magmas, Category of additive semigroups]
|
|
106
|
+
"""
|
|
107
|
+
return [AdditiveSemigroups()]
|
|
108
|
+
|
|
109
|
+
class CartesianProducts(CartesianProductsCategory):
|
|
110
|
+
|
|
111
|
+
def extra_super_categories(self):
|
|
112
|
+
"""
|
|
113
|
+
Implement the fact that a Cartesian product of additive semigroups
|
|
114
|
+
is an additive semigroup.
|
|
115
|
+
|
|
116
|
+
EXAMPLES::
|
|
117
|
+
|
|
118
|
+
sage: from sage.categories.additive_semigroups import AdditiveSemigroups
|
|
119
|
+
sage: C = AdditiveSemigroups().CartesianProducts()
|
|
120
|
+
sage: C.extra_super_categories()
|
|
121
|
+
[Category of additive semigroups]
|
|
122
|
+
sage: C.axioms()
|
|
123
|
+
frozenset({'AdditiveAssociative'})
|
|
124
|
+
"""
|
|
125
|
+
return [AdditiveSemigroups()]
|
|
126
|
+
|
|
127
|
+
class Algebras(AlgebrasCategory):
|
|
128
|
+
|
|
129
|
+
def extra_super_categories(self):
|
|
130
|
+
"""
|
|
131
|
+
EXAMPLES::
|
|
132
|
+
|
|
133
|
+
sage: from sage.categories.additive_semigroups import AdditiveSemigroups
|
|
134
|
+
sage: AdditiveSemigroups().Algebras(QQ).extra_super_categories()
|
|
135
|
+
[Category of semigroups]
|
|
136
|
+
sage: CommutativeAdditiveSemigroups().Algebras(QQ).super_categories()
|
|
137
|
+
[Category of additive semigroup algebras over Rational Field,
|
|
138
|
+
Category of additive commutative additive magma algebras over Rational Field]
|
|
139
|
+
"""
|
|
140
|
+
from sage.categories.semigroups import Semigroups
|
|
141
|
+
return [Semigroups()]
|
|
142
|
+
|
|
143
|
+
class ParentMethods:
|
|
144
|
+
|
|
145
|
+
@cached_method
|
|
146
|
+
def algebra_generators(self):
|
|
147
|
+
r"""
|
|
148
|
+
Return the generators of this algebra, as per
|
|
149
|
+
:meth:`MagmaticAlgebras.ParentMethods.algebra_generators()
|
|
150
|
+
<.magmatic_algebras.MagmaticAlgebras.ParentMethods.algebra_generators>`.
|
|
151
|
+
|
|
152
|
+
They correspond to the generators of the additive semigroup.
|
|
153
|
+
|
|
154
|
+
EXAMPLES::
|
|
155
|
+
|
|
156
|
+
sage: S = CommutativeAdditiveSemigroups().example(); S
|
|
157
|
+
An example of a commutative semigroup:
|
|
158
|
+
the free commutative semigroup generated by ('a', 'b', 'c', 'd')
|
|
159
|
+
sage: A = S.algebra(QQ) # needs sage.modules
|
|
160
|
+
sage: A.algebra_generators() # needs sage.modules
|
|
161
|
+
Family (B[a], B[b], B[c], B[d])
|
|
162
|
+
"""
|
|
163
|
+
return self.basis().keys().additive_semigroup_generators().map(self.monomial)
|
|
164
|
+
|
|
165
|
+
def product_on_basis(self, g1, g2):
|
|
166
|
+
r"""
|
|
167
|
+
Product, on basis elements, as per
|
|
168
|
+
:meth:`MagmaticAlgebras.WithBasis.ParentMethods.product_on_basis()
|
|
169
|
+
<sage.categories.magmatic_algebras.MagmaticAlgebras.WithBasis.ParentMethods.product_on_basis>`.
|
|
170
|
+
|
|
171
|
+
The product of two basis elements is induced by the
|
|
172
|
+
addition of the corresponding elements of the group.
|
|
173
|
+
|
|
174
|
+
EXAMPLES::
|
|
175
|
+
|
|
176
|
+
sage: S = CommutativeAdditiveSemigroups().example(); S
|
|
177
|
+
An example of a commutative semigroup:
|
|
178
|
+
the free commutative semigroup generated by ('a', 'b', 'c', 'd')
|
|
179
|
+
sage: A = S.algebra(QQ) # needs sage.modules
|
|
180
|
+
sage: a, b, c, d = A.algebra_generators() # needs sage.modules
|
|
181
|
+
sage: b * d * c # needs sage.modules
|
|
182
|
+
B[b + c + d]
|
|
183
|
+
"""
|
|
184
|
+
return self.monomial(g1 + g2)
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Affine Weyl groups
|
|
4
|
+
"""
|
|
5
|
+
# *****************************************************************************
|
|
6
|
+
# Copyright (C) 2009 Nicolas M. Thiery <nthiery at users.sf.net>
|
|
7
|
+
#
|
|
8
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
9
|
+
# https://www.gnu.org/licenses/
|
|
10
|
+
# *****************************************************************************
|
|
11
|
+
|
|
12
|
+
from sage.misc.cachefunc import cached_method
|
|
13
|
+
from sage.categories.category_singleton import Category_singleton
|
|
14
|
+
from sage.categories.weyl_groups import WeylGroups
|
|
15
|
+
from sage.categories.finite_enumerated_sets import FiniteEnumeratedSets
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class AffineWeylGroups(Category_singleton):
|
|
19
|
+
"""
|
|
20
|
+
The category of affine Weyl groups.
|
|
21
|
+
|
|
22
|
+
.. TODO:: add a description of this category
|
|
23
|
+
|
|
24
|
+
.. SEEALSO::
|
|
25
|
+
|
|
26
|
+
- :wikipedia:`Affine_weyl_group`
|
|
27
|
+
- :class:`WeylGroups`, :class:`WeylGroup`
|
|
28
|
+
|
|
29
|
+
EXAMPLES::
|
|
30
|
+
|
|
31
|
+
sage: C = AffineWeylGroups(); C
|
|
32
|
+
Category of affine Weyl groups
|
|
33
|
+
sage: C.super_categories()
|
|
34
|
+
[Category of infinite Weyl groups]
|
|
35
|
+
|
|
36
|
+
sage: C.example()
|
|
37
|
+
NotImplemented
|
|
38
|
+
sage: W = WeylGroup(["A", 4, 1]); W # needs sage.combinat sage.groups
|
|
39
|
+
Weyl Group of type ['A', 4, 1] (as a matrix group acting on the root space)
|
|
40
|
+
sage: W.category() # needs sage.combinat sage.groups
|
|
41
|
+
Category of irreducible affine Weyl groups
|
|
42
|
+
|
|
43
|
+
TESTS::
|
|
44
|
+
|
|
45
|
+
sage: TestSuite(C).run()
|
|
46
|
+
"""
|
|
47
|
+
|
|
48
|
+
def super_categories(self):
|
|
49
|
+
r"""
|
|
50
|
+
EXAMPLES::
|
|
51
|
+
|
|
52
|
+
sage: AffineWeylGroups().super_categories()
|
|
53
|
+
[Category of infinite Weyl groups]
|
|
54
|
+
"""
|
|
55
|
+
return [WeylGroups().Infinite()]
|
|
56
|
+
|
|
57
|
+
def additional_structure(self):
|
|
58
|
+
r"""
|
|
59
|
+
Return ``None``.
|
|
60
|
+
|
|
61
|
+
Indeed, the category of affine Weyl groups defines no
|
|
62
|
+
additional structure: affine Weyl groups are a special class
|
|
63
|
+
of Weyl groups.
|
|
64
|
+
|
|
65
|
+
.. SEEALSO:: :meth:`Category.additional_structure`
|
|
66
|
+
|
|
67
|
+
.. TODO:: Should this category be a :class:`CategoryWithAxiom`?
|
|
68
|
+
|
|
69
|
+
EXAMPLES::
|
|
70
|
+
|
|
71
|
+
sage: AffineWeylGroups().additional_structure()
|
|
72
|
+
"""
|
|
73
|
+
return None
|
|
74
|
+
|
|
75
|
+
def _repr_object_names(self):
|
|
76
|
+
"""
|
|
77
|
+
Return the name of the objects of this category.
|
|
78
|
+
|
|
79
|
+
EXAMPLES::
|
|
80
|
+
|
|
81
|
+
sage: AffineWeylGroups()
|
|
82
|
+
Category of affine Weyl groups
|
|
83
|
+
"""
|
|
84
|
+
return "affine Weyl groups"
|
|
85
|
+
|
|
86
|
+
class ParentMethods:
|
|
87
|
+
|
|
88
|
+
@cached_method
|
|
89
|
+
def special_node(self):
|
|
90
|
+
"""
|
|
91
|
+
Return the distinguished special node of the underlying
|
|
92
|
+
Dynkin diagram.
|
|
93
|
+
|
|
94
|
+
EXAMPLES::
|
|
95
|
+
|
|
96
|
+
sage: W = WeylGroup(['A', 3, 1]) # needs sage.combinat sage.groups
|
|
97
|
+
sage: W.special_node() # needs sage.combinat sage.groups
|
|
98
|
+
0
|
|
99
|
+
"""
|
|
100
|
+
return self.cartan_type().special_node()
|
|
101
|
+
|
|
102
|
+
def affine_grassmannian_elements_of_given_length(self, k):
|
|
103
|
+
"""
|
|
104
|
+
Return the affine Grassmannian elements of length `k`.
|
|
105
|
+
|
|
106
|
+
This is returned as a finite enumerated set.
|
|
107
|
+
|
|
108
|
+
EXAMPLES::
|
|
109
|
+
|
|
110
|
+
sage: W = WeylGroup(['A', 3, 1]) # needs sage.combinat sage.groups
|
|
111
|
+
sage: [x.reduced_word() # needs sage.combinat sage.groups
|
|
112
|
+
....: for x in W.affine_grassmannian_elements_of_given_length(3)]
|
|
113
|
+
[[2, 1, 0], [3, 1, 0], [2, 3, 0]]
|
|
114
|
+
|
|
115
|
+
.. SEEALSO::
|
|
116
|
+
|
|
117
|
+
:meth:`AffineWeylGroups.ElementMethods.is_affine_grassmannian`
|
|
118
|
+
"""
|
|
119
|
+
from sage.sets.recursively_enumerated_set import RecursivelyEnumeratedSet_forest
|
|
120
|
+
|
|
121
|
+
def select_length(pair):
|
|
122
|
+
u, length = pair
|
|
123
|
+
if length == k:
|
|
124
|
+
return u
|
|
125
|
+
|
|
126
|
+
def succ(pair):
|
|
127
|
+
u, length = pair
|
|
128
|
+
for i in u.descents(positive=True, side='left'):
|
|
129
|
+
u1 = u.apply_simple_reflection(i, "left")
|
|
130
|
+
if (length < k and i == u1.first_descent(side='left') and
|
|
131
|
+
u1.is_affine_grassmannian()):
|
|
132
|
+
yield (u1, length + 1)
|
|
133
|
+
|
|
134
|
+
return RecursivelyEnumeratedSet_forest(((self.one(), 0),), succ, algorithm='breadth',
|
|
135
|
+
category=FiniteEnumeratedSets(),
|
|
136
|
+
post_process=select_length)
|
|
137
|
+
|
|
138
|
+
class ElementMethods:
|
|
139
|
+
def is_affine_grassmannian(self):
|
|
140
|
+
"""
|
|
141
|
+
Test whether ``self`` is affine Grassmannian.
|
|
142
|
+
|
|
143
|
+
An element of an affine Weyl group is *affine Grassmannian*
|
|
144
|
+
if any of the following equivalent properties holds:
|
|
145
|
+
|
|
146
|
+
- all reduced words for ``self`` end with 0.
|
|
147
|
+
- ``self`` is the identity, or 0 is its single right descent.
|
|
148
|
+
- ``self`` is a minimal coset representative for W / cl W.
|
|
149
|
+
|
|
150
|
+
EXAMPLES::
|
|
151
|
+
|
|
152
|
+
sage: # needs sage.combinat sage.groups
|
|
153
|
+
sage: W = WeylGroup(['A', 3, 1])
|
|
154
|
+
sage: w = W.from_reduced_word([2,1,0])
|
|
155
|
+
sage: w.is_affine_grassmannian()
|
|
156
|
+
True
|
|
157
|
+
sage: w = W.from_reduced_word([2,0])
|
|
158
|
+
sage: w.is_affine_grassmannian()
|
|
159
|
+
False
|
|
160
|
+
sage: W.one().is_affine_grassmannian()
|
|
161
|
+
True
|
|
162
|
+
"""
|
|
163
|
+
D = self.descents()
|
|
164
|
+
return (not D) or D == [self.parent().special_node()]
|
|
165
|
+
|
|
166
|
+
def affine_grassmannian_to_core(self):
|
|
167
|
+
r"""
|
|
168
|
+
Bijection between affine Grassmannian elements of type `A_k^{(1)}` and `(k+1)`-cores.
|
|
169
|
+
|
|
170
|
+
INPUT:
|
|
171
|
+
|
|
172
|
+
- ``self`` -- an affine Grassmannian element of some affine Weyl group of type `A_k^{(1)}`
|
|
173
|
+
|
|
174
|
+
Recall that an element `w` of an affine Weyl group is
|
|
175
|
+
affine Grassmannian if all its all reduced words end in 0, see :meth:`is_affine_grassmannian`.
|
|
176
|
+
|
|
177
|
+
OUTPUT:
|
|
178
|
+
|
|
179
|
+
- a `(k+1)`-core
|
|
180
|
+
|
|
181
|
+
.. SEEALSO:: :meth:`affine_grassmannian_to_partition`
|
|
182
|
+
|
|
183
|
+
EXAMPLES::
|
|
184
|
+
|
|
185
|
+
sage: # needs sage.combinat sage.groups
|
|
186
|
+
sage: W = WeylGroup(['A', 2, 1])
|
|
187
|
+
sage: w = W.from_reduced_word([0,2,1,0])
|
|
188
|
+
sage: la = w.affine_grassmannian_to_core(); la
|
|
189
|
+
[4, 2]
|
|
190
|
+
sage: type(la)
|
|
191
|
+
<class 'sage.combinat.core.Cores_length_with_category.element_class'>
|
|
192
|
+
sage: la.to_grassmannian() == w
|
|
193
|
+
True
|
|
194
|
+
|
|
195
|
+
sage: w = W.from_reduced_word([0,2,1]) # needs sage.combinat sage.groups
|
|
196
|
+
sage: w.affine_grassmannian_to_core() # needs sage.combinat sage.groups
|
|
197
|
+
Traceback (most recent call last):
|
|
198
|
+
...
|
|
199
|
+
ValueError: this only works on type 'A' affine Grassmannian elements
|
|
200
|
+
"""
|
|
201
|
+
from sage.combinat.partition import Partition
|
|
202
|
+
from sage.combinat.core import Core
|
|
203
|
+
if not self.is_affine_grassmannian() or not self.parent().cartan_type().letter == 'A':
|
|
204
|
+
raise ValueError("this only works on type 'A' affine Grassmannian elements")
|
|
205
|
+
out = Partition([])
|
|
206
|
+
rword = self.reduced_word()
|
|
207
|
+
kp1 = self.parent().n
|
|
208
|
+
for i in range(len(rword)):
|
|
209
|
+
for c in out.outside_corners():
|
|
210
|
+
if (c[1] - c[0]) % kp1 == rword[-i - 1]:
|
|
211
|
+
out = out.add_cell(c[0], c[1])
|
|
212
|
+
return Core(out._list, kp1)
|
|
213
|
+
|
|
214
|
+
def affine_grassmannian_to_partition(self):
|
|
215
|
+
r"""
|
|
216
|
+
Bijection between affine Grassmannian elements of type `A_k^{(1)}`
|
|
217
|
+
and `k`-bounded partitions.
|
|
218
|
+
|
|
219
|
+
INPUT:
|
|
220
|
+
|
|
221
|
+
- ``self`` is affine Grassmannian element of the affine Weyl group of type `A_k^{(1)}` (i.e. all reduced words end in 0)
|
|
222
|
+
|
|
223
|
+
OUTPUT: `k`-bounded partition
|
|
224
|
+
|
|
225
|
+
.. SEEALSO:: :meth:`affine_grassmannian_to_core`
|
|
226
|
+
|
|
227
|
+
EXAMPLES::
|
|
228
|
+
|
|
229
|
+
sage: # needs sage.combinat sage.groups
|
|
230
|
+
sage: k = 2
|
|
231
|
+
sage: W = WeylGroup(['A', k, 1])
|
|
232
|
+
sage: w = W.from_reduced_word([0,2,1,0])
|
|
233
|
+
sage: la = w.affine_grassmannian_to_partition(); la
|
|
234
|
+
[2, 2]
|
|
235
|
+
sage: la.from_kbounded_to_grassmannian(k) == w
|
|
236
|
+
True
|
|
237
|
+
"""
|
|
238
|
+
return self.affine_grassmannian_to_core().to_bounded_partition()
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Algebra ideals
|
|
4
|
+
"""
|
|
5
|
+
# ****************************************************************************
|
|
6
|
+
# Copyright (C) 2005 David Kohel <kohel@maths.usyd.edu>
|
|
7
|
+
# William Stein <wstein@math.ucsd.edu>
|
|
8
|
+
# 2008-2009 Nicolas M. Thiery <nthiery at users.sf.net>
|
|
9
|
+
#
|
|
10
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
11
|
+
# https://www.gnu.org/licenses/
|
|
12
|
+
# *****************************************************************************
|
|
13
|
+
|
|
14
|
+
from sage.categories.algebra_modules import AlgebraModules
|
|
15
|
+
from sage.categories.algebras import Algebras
|
|
16
|
+
from sage.categories.category_types import Category_ideal
|
|
17
|
+
from sage.categories.rings import Rings
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class AlgebraIdeals(Category_ideal):
|
|
21
|
+
"""
|
|
22
|
+
The category of two-sided ideals in a fixed algebra `A`.
|
|
23
|
+
|
|
24
|
+
EXAMPLES::
|
|
25
|
+
|
|
26
|
+
sage: AlgebraIdeals(QQ['a'])
|
|
27
|
+
Category of algebra ideals in Univariate Polynomial Ring in a over Rational Field
|
|
28
|
+
|
|
29
|
+
.. TODO::
|
|
30
|
+
|
|
31
|
+
- Add support for non commutative rings (this is currently not
|
|
32
|
+
supported by the subcategory :class:`AlgebraModules`).
|
|
33
|
+
- Make ``AlgebraIdeals(R)``, return ``CommutativeAlgebraIdeals(R)``
|
|
34
|
+
when ``R`` is commutative.
|
|
35
|
+
- If useful, implement ``AlgebraLeftIdeals`` and
|
|
36
|
+
``AlgebraRightIdeals`` of which ``AlgebraIdeals``
|
|
37
|
+
would be a subcategory.
|
|
38
|
+
"""
|
|
39
|
+
def __init__(self, A):
|
|
40
|
+
"""
|
|
41
|
+
EXAMPLES::
|
|
42
|
+
|
|
43
|
+
sage: AlgebraIdeals(QQ['a'])
|
|
44
|
+
Category of algebra ideals in Univariate Polynomial Ring in a over Rational Field
|
|
45
|
+
sage: AlgebraIdeals(QQ)
|
|
46
|
+
Traceback (most recent call last):
|
|
47
|
+
...
|
|
48
|
+
TypeError: A (=Rational Field) must be an algebra
|
|
49
|
+
|
|
50
|
+
TESTS::
|
|
51
|
+
|
|
52
|
+
sage: TestSuite(AlgebraIdeals(QQ['a'])).run()
|
|
53
|
+
"""
|
|
54
|
+
try:
|
|
55
|
+
base_ring = A.base_ring()
|
|
56
|
+
except AttributeError:
|
|
57
|
+
raise TypeError(f"A (={A}) must be an algebra")
|
|
58
|
+
else:
|
|
59
|
+
if base_ring not in Rings() or A not in Algebras(base_ring.category()):
|
|
60
|
+
raise TypeError(f"A (={A}) must be an algebra")
|
|
61
|
+
|
|
62
|
+
Category_ideal.__init__(self, A)
|
|
63
|
+
|
|
64
|
+
def algebra(self):
|
|
65
|
+
"""
|
|
66
|
+
EXAMPLES::
|
|
67
|
+
|
|
68
|
+
sage: AlgebraIdeals(QQ['x']).algebra()
|
|
69
|
+
Univariate Polynomial Ring in x over Rational Field
|
|
70
|
+
"""
|
|
71
|
+
return self.ambient()
|
|
72
|
+
|
|
73
|
+
def super_categories(self):
|
|
74
|
+
"""
|
|
75
|
+
The category of algebra modules should be a super category of this category.
|
|
76
|
+
|
|
77
|
+
However, since algebra modules are currently only available over commutative rings,
|
|
78
|
+
we have to omit it if our ring is non-commutative.
|
|
79
|
+
|
|
80
|
+
EXAMPLES::
|
|
81
|
+
|
|
82
|
+
sage: AlgebraIdeals(QQ['x']).super_categories()
|
|
83
|
+
[Category of algebra modules
|
|
84
|
+
over Univariate Polynomial Ring in x over Rational Field]
|
|
85
|
+
sage: C = AlgebraIdeals(FreeAlgebra(QQ, 2, 'a,b')) # needs sage.combinat sage.modules
|
|
86
|
+
sage: C.super_categories() # needs sage.combinat sage.modules
|
|
87
|
+
[]
|
|
88
|
+
"""
|
|
89
|
+
R = self.algebra()
|
|
90
|
+
try:
|
|
91
|
+
if R.is_commutative():
|
|
92
|
+
return [AlgebraModules(R)]
|
|
93
|
+
except (AttributeError, NotImplementedError):
|
|
94
|
+
pass
|
|
95
|
+
return []
|