passagemath-categories 10.6.31rc3__cp314-cp314-macosx_13_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- passagemath_categories-10.6.31rc3.dist-info/METADATA +156 -0
- passagemath_categories-10.6.31rc3.dist-info/RECORD +717 -0
- passagemath_categories-10.6.31rc3.dist-info/WHEEL +6 -0
- passagemath_categories-10.6.31rc3.dist-info/top_level.txt +2 -0
- passagemath_categories.dylibs/libgmp.10.dylib +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-314-darwin.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-314-darwin.so +0 -0
- sage/arith/multi_modular.pxd +39 -0
- sage/arith/multi_modular.pyx +994 -0
- sage/arith/rational_reconstruction.cpython-314-darwin.so +0 -0
- sage/arith/rational_reconstruction.pxd +4 -0
- sage/arith/rational_reconstruction.pyx +115 -0
- sage/arith/srange.cpython-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.so +0 -0
- sage/combinat/partitions.pyx +743 -0
- sage/combinat/permutation.py +10168 -0
- sage/combinat/permutation_cython.cpython-314-darwin.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-314-darwin.so +0 -0
- sage/data_structures/binary_search.pxd +3 -0
- sage/data_structures/binary_search.pyx +66 -0
- sage/data_structures/bitset.cpython-314-darwin.so +0 -0
- sage/data_structures/bitset.pxd +40 -0
- sage/data_structures/bitset.pyx +2385 -0
- sage/data_structures/bitset_base.cpython-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.so +0 -0
- sage/ext/fast_callable.pxd +4 -0
- sage/ext/fast_callable.pyx +2746 -0
- sage/ext/fast_eval.cpython-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.so +0 -0
- sage/misc/allocator.pxd +6 -0
- sage/misc/allocator.pyx +47 -0
- sage/misc/binary_tree.cpython-314-darwin.so +0 -0
- sage/misc/binary_tree.pxd +29 -0
- sage/misc/binary_tree.pyx +537 -0
- sage/misc/callable_dict.cpython-314-darwin.so +0 -0
- sage/misc/callable_dict.pyx +89 -0
- sage/misc/citation.cpython-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.so +0 -0
- sage/misc/search.pxd +2 -0
- sage/misc/search.pyx +68 -0
- sage/misc/stopgap.cpython-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.so +0 -0
- sage/rings/factorint.pyx +295 -0
- sage/rings/fast_arith.cpython-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.so +0 -0
- sage/rings/integer.pxd +45 -0
- sage/rings/integer.pyx +7871 -0
- sage/rings/integer_ring.cpython-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.so +0 -0
- sage/rings/polynomial/commutative_polynomial.pxd +6 -0
- sage/rings/polynomial/commutative_polynomial.pyx +24 -0
- sage/rings/polynomial/cyclotomic.cpython-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.so +0 -0
- sage/rings/polynomial/polydict.pxd +45 -0
- sage/rings/polynomial/polydict.pyx +2701 -0
- sage/rings/polynomial/polynomial_compiled.cpython-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.so +0 -0
- sage/rings/real_double.pxd +16 -0
- sage/rings/real_double.pyx +2215 -0
- sage/rings/real_lazy.cpython-314-darwin.so +0 -0
- sage/rings/real_lazy.pxd +30 -0
- sage/rings/real_lazy.pyx +1773 -0
- sage/rings/ring.cpython-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.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-314-darwin.so +0 -0
- sage/tests/cython.pyx +37 -0
- sage/tests/stl_vector.cpython-314-darwin.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,150 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
"""
|
|
3
|
+
Examples of finite monoids
|
|
4
|
+
"""
|
|
5
|
+
#*****************************************************************************
|
|
6
|
+
# Copyright (C) 2008-2009 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.cachefunc import cached_method
|
|
13
|
+
from sage.sets.family import Family
|
|
14
|
+
from sage.structure.parent import Parent
|
|
15
|
+
from sage.structure.unique_representation import UniqueRepresentation
|
|
16
|
+
from sage.structure.element_wrapper import ElementWrapper
|
|
17
|
+
from sage.categories.monoids import Monoids
|
|
18
|
+
from sage.rings.integer import Integer
|
|
19
|
+
from sage.rings.integer_ring import ZZ
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class IntegerModMonoid(UniqueRepresentation, Parent):
|
|
23
|
+
r"""
|
|
24
|
+
An example of a finite monoid: the integers mod `n`.
|
|
25
|
+
|
|
26
|
+
This class illustrates a minimal implementation of a finite monoid.
|
|
27
|
+
|
|
28
|
+
EXAMPLES::
|
|
29
|
+
|
|
30
|
+
sage: S = FiniteMonoids().example(); S
|
|
31
|
+
An example of a finite multiplicative monoid: the integers modulo 12
|
|
32
|
+
|
|
33
|
+
sage: S.category()
|
|
34
|
+
Category of finitely generated finite enumerated monoids
|
|
35
|
+
|
|
36
|
+
We conclude by running systematic tests on this monoid::
|
|
37
|
+
|
|
38
|
+
sage: TestSuite(S).run(verbose = True)
|
|
39
|
+
running ._test_an_element() . . . pass
|
|
40
|
+
running ._test_associativity() . . . pass
|
|
41
|
+
running ._test_cardinality() . . . pass
|
|
42
|
+
running ._test_category() . . . pass
|
|
43
|
+
running ._test_construction() . . . pass
|
|
44
|
+
running ._test_elements() . . .
|
|
45
|
+
Running the test suite of self.an_element()
|
|
46
|
+
running ._test_category() . . . pass
|
|
47
|
+
running ._test_eq() . . . pass
|
|
48
|
+
running ._test_new() . . . pass
|
|
49
|
+
running ._test_not_implemented_methods() . . . pass
|
|
50
|
+
running ._test_pickling() . . . pass
|
|
51
|
+
pass
|
|
52
|
+
running ._test_elements_eq_reflexive() . . . pass
|
|
53
|
+
running ._test_elements_eq_symmetric() . . . pass
|
|
54
|
+
running ._test_elements_eq_transitive() . . . pass
|
|
55
|
+
running ._test_elements_neq() . . . pass
|
|
56
|
+
running ._test_enumerated_set_contains() . . . pass
|
|
57
|
+
running ._test_enumerated_set_iter_cardinality() . . . pass
|
|
58
|
+
running ._test_enumerated_set_iter_list() . . . pass
|
|
59
|
+
running ._test_eq() . . . pass
|
|
60
|
+
running ._test_new() . . . pass
|
|
61
|
+
running ._test_not_implemented_methods() . . . pass
|
|
62
|
+
running ._test_one() . . . pass
|
|
63
|
+
running ._test_pickling() . . . pass
|
|
64
|
+
running ._test_prod() . . . pass
|
|
65
|
+
running ._test_some_elements() . . . pass
|
|
66
|
+
"""
|
|
67
|
+
|
|
68
|
+
def __init__(self, n=12):
|
|
69
|
+
r"""
|
|
70
|
+
EXAMPLES::
|
|
71
|
+
|
|
72
|
+
sage: M = FiniteMonoids().example(6); M
|
|
73
|
+
An example of a finite multiplicative monoid: the integers modulo 6
|
|
74
|
+
|
|
75
|
+
TESTS::
|
|
76
|
+
|
|
77
|
+
sage: TestSuite(M).run()
|
|
78
|
+
"""
|
|
79
|
+
self.n = n
|
|
80
|
+
Parent.__init__(self, category=Monoids().Finite().FinitelyGenerated())
|
|
81
|
+
|
|
82
|
+
def _repr_(self):
|
|
83
|
+
r"""
|
|
84
|
+
TESTS::
|
|
85
|
+
|
|
86
|
+
sage: M = FiniteMonoids().example()
|
|
87
|
+
sage: M._repr_()
|
|
88
|
+
'An example of a finite multiplicative monoid: the integers modulo 12'
|
|
89
|
+
"""
|
|
90
|
+
return "An example of a finite multiplicative monoid: the integers modulo %s" % self.n
|
|
91
|
+
|
|
92
|
+
def semigroup_generators(self):
|
|
93
|
+
r"""
|
|
94
|
+
|
|
95
|
+
Returns a set of generators for ``self``, as per
|
|
96
|
+
:meth:`Semigroups.ParentMethods.semigroup_generators`.
|
|
97
|
+
Currently this returns all integers mod `n`, which is of
|
|
98
|
+
course far from optimal!
|
|
99
|
+
|
|
100
|
+
EXAMPLES::
|
|
101
|
+
|
|
102
|
+
sage: M = FiniteMonoids().example()
|
|
103
|
+
sage: M.semigroup_generators()
|
|
104
|
+
Family (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
|
|
105
|
+
"""
|
|
106
|
+
return Family(tuple(self(ZZ(i)) for i in range(self.n)))
|
|
107
|
+
|
|
108
|
+
@cached_method
|
|
109
|
+
def one(self):
|
|
110
|
+
r"""
|
|
111
|
+
Return the one of the monoid, as per :meth:`Monoids.ParentMethods.one`.
|
|
112
|
+
|
|
113
|
+
EXAMPLES::
|
|
114
|
+
|
|
115
|
+
sage: M = FiniteMonoids().example()
|
|
116
|
+
sage: M.one()
|
|
117
|
+
1
|
|
118
|
+
"""
|
|
119
|
+
return self(ZZ.one())
|
|
120
|
+
|
|
121
|
+
def product(self, x, y):
|
|
122
|
+
r"""
|
|
123
|
+
Return the product of two elements `x` and `y` of the monoid, as
|
|
124
|
+
per :meth:`Semigroups.ParentMethods.product`.
|
|
125
|
+
|
|
126
|
+
EXAMPLES::
|
|
127
|
+
|
|
128
|
+
sage: M = FiniteMonoids().example()
|
|
129
|
+
sage: M.product(M(3), M(5))
|
|
130
|
+
3
|
|
131
|
+
"""
|
|
132
|
+
return self((x.value * y.value) % self.n)
|
|
133
|
+
|
|
134
|
+
def an_element(self):
|
|
135
|
+
r"""
|
|
136
|
+
Return an element of the monoid, as per :meth:`Sets.ParentMethods.an_element`.
|
|
137
|
+
|
|
138
|
+
EXAMPLES::
|
|
139
|
+
|
|
140
|
+
sage: M = FiniteMonoids().example()
|
|
141
|
+
sage: M.an_element()
|
|
142
|
+
6
|
|
143
|
+
"""
|
|
144
|
+
return self(ZZ(42) % self.n)
|
|
145
|
+
|
|
146
|
+
class Element (ElementWrapper):
|
|
147
|
+
wrapped_class = Integer
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
Example = IntegerModMonoid
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
"""
|
|
3
|
+
Examples of finite semigroups
|
|
4
|
+
"""
|
|
5
|
+
#*****************************************************************************
|
|
6
|
+
# Copyright (C) 2008-2009 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.cachefunc import cached_method
|
|
13
|
+
from sage.sets.family import Family
|
|
14
|
+
from sage.categories.semigroups import Semigroups
|
|
15
|
+
from sage.structure.parent import Parent
|
|
16
|
+
from sage.structure.unique_representation import UniqueRepresentation
|
|
17
|
+
from sage.structure.element_wrapper import ElementWrapper
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class LeftRegularBand(UniqueRepresentation, Parent):
|
|
21
|
+
r"""
|
|
22
|
+
An example of a finite semigroup.
|
|
23
|
+
|
|
24
|
+
This class provides a minimal implementation of a finite semigroup.
|
|
25
|
+
|
|
26
|
+
EXAMPLES::
|
|
27
|
+
|
|
28
|
+
sage: S = FiniteSemigroups().example(); S
|
|
29
|
+
An example of a finite semigroup:
|
|
30
|
+
the left regular band generated by ('a', 'b', 'c', 'd')
|
|
31
|
+
|
|
32
|
+
This is the semigroup generated by::
|
|
33
|
+
|
|
34
|
+
sage: S.semigroup_generators()
|
|
35
|
+
Family ('a', 'b', 'c', 'd')
|
|
36
|
+
|
|
37
|
+
such that `x^2 = x` and `x y x = xy` for any `x` and `y` in `S`::
|
|
38
|
+
|
|
39
|
+
sage: S('dab')
|
|
40
|
+
'dab'
|
|
41
|
+
sage: S('dab') * S('acb')
|
|
42
|
+
'dabc'
|
|
43
|
+
|
|
44
|
+
It follows that the elements of `S` are strings without
|
|
45
|
+
repetitions over the alphabet `a`, `b`, `c`, `d`::
|
|
46
|
+
|
|
47
|
+
sage: sorted(S.list())
|
|
48
|
+
['a', 'ab', 'abc', 'abcd', 'abd', 'abdc', 'ac', 'acb', 'acbd', 'acd',
|
|
49
|
+
'acdb', 'ad', 'adb', 'adbc', 'adc', 'adcb', 'b', 'ba', 'bac',
|
|
50
|
+
'bacd', 'bad', 'badc', 'bc', 'bca', 'bcad', 'bcd', 'bcda', 'bd',
|
|
51
|
+
'bda', 'bdac', 'bdc', 'bdca', 'c', 'ca', 'cab', 'cabd', 'cad',
|
|
52
|
+
'cadb', 'cb', 'cba', 'cbad', 'cbd', 'cbda', 'cd', 'cda', 'cdab',
|
|
53
|
+
'cdb', 'cdba', 'd', 'da', 'dab', 'dabc', 'dac', 'dacb', 'db',
|
|
54
|
+
'dba', 'dbac', 'dbc', 'dbca', 'dc', 'dca', 'dcab', 'dcb', 'dcba']
|
|
55
|
+
|
|
56
|
+
It also follows that there are finitely many of them::
|
|
57
|
+
|
|
58
|
+
sage: S.cardinality()
|
|
59
|
+
64
|
|
60
|
+
|
|
61
|
+
Indeed::
|
|
62
|
+
|
|
63
|
+
sage: 4 * ( 1 + 3 * (1 + 2 * (1 + 1)))
|
|
64
|
+
64
|
|
65
|
+
|
|
66
|
+
As expected, all the elements of `S` are idempotents::
|
|
67
|
+
|
|
68
|
+
sage: all( x.is_idempotent() for x in S )
|
|
69
|
+
True
|
|
70
|
+
|
|
71
|
+
Now, let us look at the structure of the semigroup::
|
|
72
|
+
|
|
73
|
+
sage: S = FiniteSemigroups().example(alphabet = ('a','b','c'))
|
|
74
|
+
sage: S.cayley_graph(side='left', simple=True).plot() # needs sage.graphs sage.plot
|
|
75
|
+
Graphics object consisting of 60 graphics primitives
|
|
76
|
+
sage: S.j_transversal_of_idempotents() # random (arbitrary choice) # needs sage.graphs
|
|
77
|
+
['acb', 'ac', 'ab', 'bc', 'a', 'c', 'b']
|
|
78
|
+
|
|
79
|
+
We conclude by running systematic tests on this semigroup::
|
|
80
|
+
|
|
81
|
+
sage: TestSuite(S).run(verbose = True)
|
|
82
|
+
running ._test_an_element() . . . pass
|
|
83
|
+
running ._test_associativity() . . . pass
|
|
84
|
+
running ._test_cardinality() . . . pass
|
|
85
|
+
running ._test_category() . . . pass
|
|
86
|
+
running ._test_construction() . . . pass
|
|
87
|
+
running ._test_elements() . . .
|
|
88
|
+
Running the test suite of self.an_element()
|
|
89
|
+
running ._test_category() . . . pass
|
|
90
|
+
running ._test_eq() . . . pass
|
|
91
|
+
running ._test_new() . . . pass
|
|
92
|
+
running ._test_not_implemented_methods() . . . pass
|
|
93
|
+
running ._test_pickling() . . . pass
|
|
94
|
+
pass
|
|
95
|
+
running ._test_elements_eq_reflexive() . . . pass
|
|
96
|
+
running ._test_elements_eq_symmetric() . . . pass
|
|
97
|
+
running ._test_elements_eq_transitive() . . . pass
|
|
98
|
+
running ._test_elements_neq() . . . pass
|
|
99
|
+
running ._test_enumerated_set_contains() . . . pass
|
|
100
|
+
running ._test_enumerated_set_iter_cardinality() . . . pass
|
|
101
|
+
running ._test_enumerated_set_iter_list() . . . pass
|
|
102
|
+
running ._test_eq() . . . pass
|
|
103
|
+
running ._test_new() . . . pass
|
|
104
|
+
running ._test_not_implemented_methods() . . . pass
|
|
105
|
+
running ._test_pickling() . . . pass
|
|
106
|
+
running ._test_some_elements() . . . pass
|
|
107
|
+
"""
|
|
108
|
+
|
|
109
|
+
def __init__(self, alphabet=('a','b','c','d')):
|
|
110
|
+
r"""
|
|
111
|
+
A left regular band.
|
|
112
|
+
|
|
113
|
+
EXAMPLES::
|
|
114
|
+
|
|
115
|
+
sage: S = FiniteSemigroups().example(); S
|
|
116
|
+
An example of a finite semigroup: the left regular band generated by ('a', 'b', 'c', 'd')
|
|
117
|
+
sage: S = FiniteSemigroups().example(alphabet=('x','y')); S
|
|
118
|
+
An example of a finite semigroup: the left regular band generated by ('x', 'y')
|
|
119
|
+
sage: TestSuite(S).run()
|
|
120
|
+
"""
|
|
121
|
+
self.alphabet = alphabet
|
|
122
|
+
Parent.__init__(self,
|
|
123
|
+
category=Semigroups().Finite().FinitelyGenerated())
|
|
124
|
+
|
|
125
|
+
def _repr_(self):
|
|
126
|
+
r"""
|
|
127
|
+
TESTS::
|
|
128
|
+
|
|
129
|
+
sage: S = FiniteSemigroups().example()
|
|
130
|
+
sage: S._repr_()
|
|
131
|
+
"An example of a finite semigroup: the left regular band generated by ('a', 'b', 'c', 'd')"
|
|
132
|
+
"""
|
|
133
|
+
return "An example of a finite semigroup: the left regular band generated by %s" % (self.alphabet,)
|
|
134
|
+
|
|
135
|
+
def product(self, x, y):
|
|
136
|
+
r"""
|
|
137
|
+
Return the product of two elements of the semigroup.
|
|
138
|
+
|
|
139
|
+
EXAMPLES::
|
|
140
|
+
|
|
141
|
+
sage: S = FiniteSemigroups().example()
|
|
142
|
+
sage: S('a') * S('b')
|
|
143
|
+
'ab'
|
|
144
|
+
sage: S('a') * S('b') * S('a')
|
|
145
|
+
'ab'
|
|
146
|
+
sage: S('a') * S('a')
|
|
147
|
+
'a'
|
|
148
|
+
"""
|
|
149
|
+
assert x in self
|
|
150
|
+
assert y in self
|
|
151
|
+
x = x.value
|
|
152
|
+
y = y.value
|
|
153
|
+
return self(x + ''.join(c for c in y if c not in x))
|
|
154
|
+
|
|
155
|
+
@cached_method
|
|
156
|
+
def semigroup_generators(self):
|
|
157
|
+
r"""
|
|
158
|
+
Return the generators of the semigroup.
|
|
159
|
+
|
|
160
|
+
EXAMPLES::
|
|
161
|
+
|
|
162
|
+
sage: S = FiniteSemigroups().example(alphabet=('x','y'))
|
|
163
|
+
sage: S.semigroup_generators()
|
|
164
|
+
Family ('x', 'y')
|
|
165
|
+
"""
|
|
166
|
+
return Family([self(i) for i in self.alphabet])
|
|
167
|
+
|
|
168
|
+
def an_element(self):
|
|
169
|
+
r"""
|
|
170
|
+
Return an element of the semigroup.
|
|
171
|
+
|
|
172
|
+
EXAMPLES::
|
|
173
|
+
|
|
174
|
+
sage: S = FiniteSemigroups().example()
|
|
175
|
+
sage: S.an_element()
|
|
176
|
+
'cdab'
|
|
177
|
+
|
|
178
|
+
sage: S = FiniteSemigroups().example(("b"))
|
|
179
|
+
sage: S.an_element()
|
|
180
|
+
'b'
|
|
181
|
+
"""
|
|
182
|
+
|
|
183
|
+
return self(''.join(self.alphabet[2:]+self.alphabet[0:2]))
|
|
184
|
+
|
|
185
|
+
class Element (ElementWrapper):
|
|
186
|
+
wrapped_class = str
|
|
187
|
+
__lt__ = ElementWrapper._lt_by_value
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
Example = LeftRegularBand
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Examples of finite Weyl groups
|
|
4
|
+
"""
|
|
5
|
+
# ****************************************************************************
|
|
6
|
+
# Copyright (C) 2008-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.structure.parent import Parent
|
|
14
|
+
from sage.structure.element_wrapper import ElementWrapper
|
|
15
|
+
from sage.categories.finite_weyl_groups import FiniteWeylGroups
|
|
16
|
+
from sage.structure.unique_representation import UniqueRepresentation
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class SymmetricGroup(UniqueRepresentation, Parent):
|
|
20
|
+
r"""
|
|
21
|
+
An example of finite Weyl group: the symmetric group, with
|
|
22
|
+
elements in list notation.
|
|
23
|
+
|
|
24
|
+
The purpose of this class is to provide a minimal template for
|
|
25
|
+
implementing finite Weyl groups. See
|
|
26
|
+
:class:`~sage.groups.perm_gps.permgroup_named.SymmetricGroup` for
|
|
27
|
+
a full featured and optimized implementation.
|
|
28
|
+
|
|
29
|
+
EXAMPLES::
|
|
30
|
+
|
|
31
|
+
sage: S = FiniteWeylGroups().example()
|
|
32
|
+
sage: S
|
|
33
|
+
The symmetric group on {0, ..., 3}
|
|
34
|
+
sage: S.category()
|
|
35
|
+
Category of finite irreducible Weyl groups
|
|
36
|
+
|
|
37
|
+
The elements of this group are permutations of the set `\{0,\ldots,3\}`::
|
|
38
|
+
|
|
39
|
+
sage: S.one()
|
|
40
|
+
(0, 1, 2, 3)
|
|
41
|
+
sage: S.an_element()
|
|
42
|
+
(1, 2, 3, 0)
|
|
43
|
+
|
|
44
|
+
The group itself is generated by the elementary transpositions::
|
|
45
|
+
|
|
46
|
+
sage: S.simple_reflections()
|
|
47
|
+
Finite family {0: (1, 0, 2, 3), 1: (0, 2, 1, 3), 2: (0, 1, 3, 2)}
|
|
48
|
+
|
|
49
|
+
Only the following basic operations are implemented:
|
|
50
|
+
|
|
51
|
+
- :meth:`.one`
|
|
52
|
+
- :meth:`.product`
|
|
53
|
+
- :meth:`.simple_reflection`
|
|
54
|
+
- :meth:`.cartan_type`
|
|
55
|
+
- :meth:`.Element.has_right_descent`.
|
|
56
|
+
|
|
57
|
+
All the other usual Weyl group operations are inherited from the
|
|
58
|
+
categories::
|
|
59
|
+
|
|
60
|
+
sage: S.cardinality()
|
|
61
|
+
24
|
|
62
|
+
sage: S.long_element()
|
|
63
|
+
(3, 2, 1, 0)
|
|
64
|
+
sage: S.cayley_graph(side='left').plot() # needs sage.graphs sage.plot
|
|
65
|
+
Graphics object consisting of 120 graphics primitives
|
|
66
|
+
|
|
67
|
+
Alternatively, one could have implemented
|
|
68
|
+
:meth:`sage.categories.coxeter_groups.CoxeterGroups.ElementMethods.apply_simple_reflection`
|
|
69
|
+
instead of :meth:`.simple_reflection` and :meth:`.product`. See
|
|
70
|
+
``CoxeterGroups().example()``.
|
|
71
|
+
|
|
72
|
+
TESTS::
|
|
73
|
+
|
|
74
|
+
sage: TestSuite(S).run()
|
|
75
|
+
"""
|
|
76
|
+
|
|
77
|
+
def __init__(self, n=4):
|
|
78
|
+
"""
|
|
79
|
+
EXAMPLES::
|
|
80
|
+
|
|
81
|
+
sage: S = sage.categories.examples.finite_weyl_groups.SymmetricGroup(4)
|
|
82
|
+
sage: S == FiniteWeylGroups().example(4)
|
|
83
|
+
True
|
|
84
|
+
"""
|
|
85
|
+
Parent.__init__(self, category=FiniteWeylGroups().Irreducible())
|
|
86
|
+
self.n = n
|
|
87
|
+
|
|
88
|
+
def _repr_(self):
|
|
89
|
+
"""
|
|
90
|
+
EXAMPLES::
|
|
91
|
+
|
|
92
|
+
sage: FiniteWeylGroups().example()
|
|
93
|
+
The symmetric group on {0, ..., 3}
|
|
94
|
+
"""
|
|
95
|
+
return "The symmetric group on {0, ..., %s}" % (self.n-1)
|
|
96
|
+
|
|
97
|
+
@cached_method
|
|
98
|
+
def one(self):
|
|
99
|
+
"""
|
|
100
|
+
Implement :meth:`Monoids.ParentMethods.one`.
|
|
101
|
+
|
|
102
|
+
EXAMPLES::
|
|
103
|
+
|
|
104
|
+
sage: FiniteWeylGroups().example().one()
|
|
105
|
+
(0, 1, 2, 3)
|
|
106
|
+
"""
|
|
107
|
+
return self(tuple(range(self.n)))
|
|
108
|
+
|
|
109
|
+
def index_set(self):
|
|
110
|
+
"""
|
|
111
|
+
Implement :meth:`CoxeterGroups.ParentMethods.index_set`.
|
|
112
|
+
|
|
113
|
+
EXAMPLES::
|
|
114
|
+
|
|
115
|
+
sage: FiniteWeylGroups().example().index_set()
|
|
116
|
+
[0, 1, 2]
|
|
117
|
+
"""
|
|
118
|
+
return list(range(self.n - 1))
|
|
119
|
+
|
|
120
|
+
def simple_reflection(self, i):
|
|
121
|
+
"""
|
|
122
|
+
Implement :meth:`CoxeterGroups.ParentMethods.simple_reflection`
|
|
123
|
+
by returning the transposition `(i, i+1)`.
|
|
124
|
+
|
|
125
|
+
EXAMPLES::
|
|
126
|
+
|
|
127
|
+
sage: FiniteWeylGroups().example().simple_reflection(2)
|
|
128
|
+
(0, 1, 3, 2)
|
|
129
|
+
"""
|
|
130
|
+
assert i in self.index_set()
|
|
131
|
+
return self(tuple(range(i)) + (i + 1, i) + tuple(range(i + 2, self.n)))
|
|
132
|
+
|
|
133
|
+
def cartan_type(self):
|
|
134
|
+
"""
|
|
135
|
+
Return the Cartan type of ``self``.
|
|
136
|
+
|
|
137
|
+
EXAMPLES::
|
|
138
|
+
|
|
139
|
+
sage: FiniteWeylGroups().example().cartan_type() # needs sage.modules
|
|
140
|
+
['A', 3] relabelled by {1: 0, 2: 1, 3: 2}
|
|
141
|
+
"""
|
|
142
|
+
from sage.combinat.root_system.cartan_type import CartanType
|
|
143
|
+
C = CartanType(['A',self.n-1])
|
|
144
|
+
C = C.relabel(lambda i:i-1)
|
|
145
|
+
return C
|
|
146
|
+
|
|
147
|
+
def product(self, x, y):
|
|
148
|
+
"""
|
|
149
|
+
Implement :meth:`Semigroups.ParentMethods.product`.
|
|
150
|
+
|
|
151
|
+
EXAMPLES::
|
|
152
|
+
|
|
153
|
+
sage: s = FiniteWeylGroups().example().simple_reflections()
|
|
154
|
+
sage: s[1] * s[2]
|
|
155
|
+
(0, 2, 3, 1)
|
|
156
|
+
"""
|
|
157
|
+
assert x in self
|
|
158
|
+
assert y in self
|
|
159
|
+
return self(tuple(x.value[i] for i in y.value))
|
|
160
|
+
|
|
161
|
+
def degrees(self):
|
|
162
|
+
"""
|
|
163
|
+
Return the degrees of ``self``.
|
|
164
|
+
|
|
165
|
+
EXAMPLES::
|
|
166
|
+
|
|
167
|
+
sage: W = FiniteWeylGroups().example()
|
|
168
|
+
sage: W.degrees()
|
|
169
|
+
(2, 3, 4)
|
|
170
|
+
"""
|
|
171
|
+
from sage.rings.integer_ring import ZZ
|
|
172
|
+
return tuple(ZZ(i) for i in range(2, self.n + 1))
|
|
173
|
+
|
|
174
|
+
class Element(ElementWrapper):
|
|
175
|
+
|
|
176
|
+
def has_right_descent(self, i) -> bool:
|
|
177
|
+
"""
|
|
178
|
+
Implement :meth:`CoxeterGroups.ElementMethods.has_right_descent`.
|
|
179
|
+
|
|
180
|
+
EXAMPLES::
|
|
181
|
+
|
|
182
|
+
sage: S = FiniteWeylGroups().example()
|
|
183
|
+
sage: s = S.simple_reflections()
|
|
184
|
+
sage: (s[1] * s[2]).has_descent(2)
|
|
185
|
+
True
|
|
186
|
+
sage: S._test_has_descent()
|
|
187
|
+
"""
|
|
188
|
+
return (self.value[i] > self.value[i + 1])
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
Example = SymmetricGroup
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
# sage.doctest: needs sage.modules
|
|
3
|
+
r"""
|
|
4
|
+
Examples of graded connected Hopf algebras with basis
|
|
5
|
+
"""
|
|
6
|
+
# ****************************************************************************
|
|
7
|
+
# Copyright (C) 2015 Jean-Baptiste Priez <jbp@kerios.fr>
|
|
8
|
+
#
|
|
9
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
10
|
+
# https://www.gnu.org/licenses/
|
|
11
|
+
# ****************************************************************************
|
|
12
|
+
|
|
13
|
+
from sage.categories.graded_hopf_algebras_with_basis import GradedHopfAlgebrasWithBasis
|
|
14
|
+
from sage.combinat.free_module import CombinatorialFreeModule
|
|
15
|
+
from sage.rings.integer import Integer
|
|
16
|
+
from sage.misc.cachefunc import cached_method
|
|
17
|
+
from sage.sets.non_negative_integers import NonNegativeIntegers
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class GradedConnectedCombinatorialHopfAlgebraWithPrimitiveGenerator(CombinatorialFreeModule):
|
|
21
|
+
r"""
|
|
22
|
+
This class illustrates an implementation of a graded Hopf algebra
|
|
23
|
+
with basis that has one primitive generator of degree 1 and basis
|
|
24
|
+
elements indexed by nonnegative integers.
|
|
25
|
+
|
|
26
|
+
This Hopf algebra example differs from what topologists refer to as
|
|
27
|
+
a graded Hopf algebra because the twist operation in the tensor rule
|
|
28
|
+
satisfies
|
|
29
|
+
|
|
30
|
+
.. MATH::
|
|
31
|
+
|
|
32
|
+
(\mu \otimes \mu) \circ (id \otimes \tau \otimes id) \circ
|
|
33
|
+
(\Delta \otimes \Delta) = \Delta \circ \mu
|
|
34
|
+
|
|
35
|
+
where `\tau(x\otimes y) = y\otimes x`.
|
|
36
|
+
"""
|
|
37
|
+
def __init__(self, base_ring):
|
|
38
|
+
"""
|
|
39
|
+
EXAMPLES::
|
|
40
|
+
|
|
41
|
+
sage: H = GradedHopfAlgebrasWithBasis(QQ).Connected().example()
|
|
42
|
+
sage: TestSuite(H).run()
|
|
43
|
+
"""
|
|
44
|
+
CombinatorialFreeModule.__init__(self, base_ring, NonNegativeIntegers(),
|
|
45
|
+
category=GradedHopfAlgebrasWithBasis(base_ring).Connected())
|
|
46
|
+
|
|
47
|
+
@cached_method
|
|
48
|
+
def one_basis(self):
|
|
49
|
+
"""
|
|
50
|
+
Return 0, which index the unit of the Hopf algebra.
|
|
51
|
+
|
|
52
|
+
OUTPUT: the nonnegative integer 0
|
|
53
|
+
|
|
54
|
+
EXAMPLES::
|
|
55
|
+
|
|
56
|
+
sage: H = GradedHopfAlgebrasWithBasis(QQ).Connected().example()
|
|
57
|
+
sage: H.one_basis()
|
|
58
|
+
0
|
|
59
|
+
sage: H.one()
|
|
60
|
+
P0
|
|
61
|
+
"""
|
|
62
|
+
return self.basis().keys()(0)
|
|
63
|
+
|
|
64
|
+
def degree_on_basis(self, i):
|
|
65
|
+
"""
|
|
66
|
+
The degree of a nonnegative integer is itself.
|
|
67
|
+
|
|
68
|
+
INPUT:
|
|
69
|
+
|
|
70
|
+
- ``i`` -- nonnegative integer
|
|
71
|
+
|
|
72
|
+
OUTPUT: nonnegative integer
|
|
73
|
+
|
|
74
|
+
TESTS::
|
|
75
|
+
|
|
76
|
+
sage: H = GradedHopfAlgebrasWithBasis(QQ).Connected().example()
|
|
77
|
+
sage: H.degree_on_basis(45)
|
|
78
|
+
45
|
|
79
|
+
"""
|
|
80
|
+
return i
|
|
81
|
+
|
|
82
|
+
def _repr_(self):
|
|
83
|
+
"""
|
|
84
|
+
Representation of the graded connected Hopf algebra.
|
|
85
|
+
|
|
86
|
+
EXAMPLES::
|
|
87
|
+
|
|
88
|
+
sage: GradedHopfAlgebrasWithBasis(QQ).Connected().example()
|
|
89
|
+
An example of a graded connected Hopf algebra with basis over Rational Field
|
|
90
|
+
"""
|
|
91
|
+
return "An example of a graded connected Hopf algebra with basis over %s" % self.base_ring()
|
|
92
|
+
|
|
93
|
+
def _repr_term(self, i):
|
|
94
|
+
"""
|
|
95
|
+
Representation for the basis element indexed by the integer ``i``.
|
|
96
|
+
|
|
97
|
+
EXAMPLES::
|
|
98
|
+
|
|
99
|
+
sage: H = GradedHopfAlgebrasWithBasis(QQ).Connected().example()
|
|
100
|
+
sage: H._repr_term(45)
|
|
101
|
+
'P45'
|
|
102
|
+
"""
|
|
103
|
+
return 'P' + repr(i)
|
|
104
|
+
|
|
105
|
+
def product_on_basis(self, i, j):
|
|
106
|
+
"""
|
|
107
|
+
The product of two basis elements.
|
|
108
|
+
|
|
109
|
+
The product of elements of degree ``i`` and ``j`` is an element
|
|
110
|
+
of degree ``i+j``.
|
|
111
|
+
|
|
112
|
+
INPUT:
|
|
113
|
+
|
|
114
|
+
- ``i``, ``j`` -- nonnegative integers
|
|
115
|
+
|
|
116
|
+
OUTPUT: a basis element indexed by ``i+j``
|
|
117
|
+
|
|
118
|
+
TESTS::
|
|
119
|
+
|
|
120
|
+
sage: H = GradedHopfAlgebrasWithBasis(QQ).Connected().example()
|
|
121
|
+
sage: H.monomial(4) * H.monomial(5)
|
|
122
|
+
P9
|
|
123
|
+
"""
|
|
124
|
+
return self.monomial(i+j)
|
|
125
|
+
|
|
126
|
+
def coproduct_on_basis(self, i):
|
|
127
|
+
r"""
|
|
128
|
+
The coproduct of a basis element.
|
|
129
|
+
|
|
130
|
+
.. MATH::
|
|
131
|
+
|
|
132
|
+
\Delta(P_i) = \sum_{j=0}^i P_{i-j} \otimes P_j
|
|
133
|
+
|
|
134
|
+
INPUT:
|
|
135
|
+
|
|
136
|
+
- ``i`` -- nonnegative integer
|
|
137
|
+
|
|
138
|
+
OUTPUT: an element of the tensor square of ``self``
|
|
139
|
+
|
|
140
|
+
TESTS::
|
|
141
|
+
|
|
142
|
+
sage: H = GradedHopfAlgebrasWithBasis(QQ).Connected().example()
|
|
143
|
+
sage: H.monomial(3).coproduct()
|
|
144
|
+
P0 # P3 + 3*P1 # P2 + 3*P2 # P1 + P3 # P0
|
|
145
|
+
"""
|
|
146
|
+
return self.sum_of_terms(
|
|
147
|
+
((i - j, j), Integer(i).binomial(j))
|
|
148
|
+
for j in range(i + 1)
|
|
149
|
+
)
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
Example = GradedConnectedCombinatorialHopfAlgebraWithPrimitiveGenerator
|