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,168 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
# sage.doctest: needs sage.combinat
|
|
3
|
+
r"""
|
|
4
|
+
Examples of graded modules with basis
|
|
5
|
+
"""
|
|
6
|
+
# ****************************************************************************
|
|
7
|
+
# Copyright (C) 2013 Frédéric Chapoton <fchapoton2@gmail.com>
|
|
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_modules_with_basis import GradedModulesWithBasis
|
|
14
|
+
from sage.categories.filtered_modules_with_basis import FilteredModulesWithBasis
|
|
15
|
+
from sage.combinat.free_module import CombinatorialFreeModule
|
|
16
|
+
from sage.combinat.partition import Partitions
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class GradedPartitionModule(CombinatorialFreeModule):
|
|
20
|
+
r"""
|
|
21
|
+
This class illustrates an implementation of a graded module
|
|
22
|
+
with basis: the free module over partitions.
|
|
23
|
+
|
|
24
|
+
INPUT:
|
|
25
|
+
|
|
26
|
+
- ``R`` -- base ring
|
|
27
|
+
|
|
28
|
+
The implementation involves the following:
|
|
29
|
+
|
|
30
|
+
- A choice of how to represent elements. In this case, the basis
|
|
31
|
+
elements are partitions. The algebra is constructed as a
|
|
32
|
+
:class:`CombinatorialFreeModule
|
|
33
|
+
<sage.combinat.free_module.CombinatorialFreeModule>` on the
|
|
34
|
+
set of partitions, so it inherits all of the methods for such
|
|
35
|
+
objects, and has operations like addition already defined.
|
|
36
|
+
|
|
37
|
+
::
|
|
38
|
+
|
|
39
|
+
sage: A = GradedModulesWithBasis(QQ).example() # needs sage.modules
|
|
40
|
+
|
|
41
|
+
- A basis function - this module is graded by the nonnegative
|
|
42
|
+
integers, so there is a function defined in this module,
|
|
43
|
+
creatively called :func:`basis`, which takes an integer
|
|
44
|
+
`d` as input and returns a family of partitions representing a basis
|
|
45
|
+
for the algebra in degree `d`.
|
|
46
|
+
|
|
47
|
+
::
|
|
48
|
+
|
|
49
|
+
sage: A.basis(2) # needs sage.modules
|
|
50
|
+
Lazy family (Term map from Partitions to An example of a graded module with basis: the free module on partitions over Rational Field(i))_{i in Partitions of the integer 2}
|
|
51
|
+
sage: A.basis(6)[Partition([3,2,1])] # needs sage.modules
|
|
52
|
+
P[3, 2, 1]
|
|
53
|
+
|
|
54
|
+
- If the algebra is called ``A``, then its basis function is
|
|
55
|
+
stored as ``A.basis``. Thus the function can be used to
|
|
56
|
+
find a basis for the degree `d` piece: essentially, just call
|
|
57
|
+
``A.basis(d)``. More precisely, call ``x`` for
|
|
58
|
+
each ``x`` in ``A.basis(d)``.
|
|
59
|
+
|
|
60
|
+
::
|
|
61
|
+
|
|
62
|
+
sage: [m for m in A.basis(4)] # needs sage.modules
|
|
63
|
+
[P[4], P[3, 1], P[2, 2], P[2, 1, 1], P[1, 1, 1, 1]]
|
|
64
|
+
|
|
65
|
+
- For dealing with basis elements: :meth:`degree_on_basis`, and
|
|
66
|
+
:meth:`_repr_term`. The first of these defines the degree of any
|
|
67
|
+
monomial, and then the :meth:`degree
|
|
68
|
+
<GradedModules.Element.degree>` method for elements --
|
|
69
|
+
see the next item -- uses it to compute the degree for a linear
|
|
70
|
+
combination of monomials. The last of these determines the
|
|
71
|
+
print representation for monomials, which automatically produces
|
|
72
|
+
the print representation for general elements.
|
|
73
|
+
|
|
74
|
+
::
|
|
75
|
+
|
|
76
|
+
sage: A.degree_on_basis(Partition([4,3])) # needs sage.modules
|
|
77
|
+
7
|
|
78
|
+
sage: A._repr_term(Partition([4,3])) # needs sage.modules
|
|
79
|
+
'P[4, 3]'
|
|
80
|
+
|
|
81
|
+
- There is a class for elements, which inherits from
|
|
82
|
+
:class:`IndexedFreeModuleElement
|
|
83
|
+
<sage.modules.with_basis.indexed_element.IndexedFreeModuleElement>`.
|
|
84
|
+
An element is determined by a dictionary whose keys are partitions and
|
|
85
|
+
whose corresponding values are the coefficients. The class implements
|
|
86
|
+
two things: an :meth:`is_homogeneous
|
|
87
|
+
<GradedModules.Element.is_homogeneous>` method and a
|
|
88
|
+
:meth:`degree <GradedModules.Element.degree>` method.
|
|
89
|
+
|
|
90
|
+
::
|
|
91
|
+
|
|
92
|
+
sage: p = A.monomial(Partition([3,2,1])); p # needs sage.modules
|
|
93
|
+
P[3, 2, 1]
|
|
94
|
+
sage: p.is_homogeneous() # needs sage.modules
|
|
95
|
+
True
|
|
96
|
+
sage: p.degree() # needs sage.modules
|
|
97
|
+
6
|
|
98
|
+
"""
|
|
99
|
+
def __init__(self, base_ring):
|
|
100
|
+
"""
|
|
101
|
+
EXAMPLES::
|
|
102
|
+
|
|
103
|
+
sage: A = GradedModulesWithBasis(QQ).example(); A # needs sage.modules
|
|
104
|
+
An example of a graded module with basis: the free module on partitions over Rational Field
|
|
105
|
+
sage: TestSuite(A).run() # needs sage.modules
|
|
106
|
+
"""
|
|
107
|
+
CombinatorialFreeModule.__init__(self, base_ring, Partitions(),
|
|
108
|
+
category=GradedModulesWithBasis(base_ring))
|
|
109
|
+
|
|
110
|
+
# FIXME: this is currently required, because the implementation of ``basis``
|
|
111
|
+
# in CombinatorialFreeModule overrides that of GradedModulesWithBasis
|
|
112
|
+
basis = FilteredModulesWithBasis.ParentMethods.__dict__['basis']
|
|
113
|
+
|
|
114
|
+
# This could be a default implementation
|
|
115
|
+
def degree_on_basis(self, t):
|
|
116
|
+
"""
|
|
117
|
+
The degree of the element determined by the partition ``t`` in
|
|
118
|
+
this graded module.
|
|
119
|
+
|
|
120
|
+
INPUT:
|
|
121
|
+
|
|
122
|
+
- ``t`` -- the index of an element of the basis of this module,
|
|
123
|
+
i.e. a partition
|
|
124
|
+
|
|
125
|
+
OUTPUT: integer, the degree of the corresponding basis element
|
|
126
|
+
|
|
127
|
+
EXAMPLES::
|
|
128
|
+
|
|
129
|
+
sage: # needs sage.modules
|
|
130
|
+
sage: A = GradedModulesWithBasis(QQ).example()
|
|
131
|
+
sage: A.degree_on_basis(Partition((2,1)))
|
|
132
|
+
3
|
|
133
|
+
sage: A.degree_on_basis(Partition((4,2,1,1,1,1)))
|
|
134
|
+
10
|
|
135
|
+
sage: type(A.degree_on_basis(Partition((1,1))))
|
|
136
|
+
<class 'sage.rings.integer.Integer'>
|
|
137
|
+
"""
|
|
138
|
+
return t.size()
|
|
139
|
+
|
|
140
|
+
def _repr_(self):
|
|
141
|
+
"""
|
|
142
|
+
Print representation.
|
|
143
|
+
|
|
144
|
+
EXAMPLES::
|
|
145
|
+
|
|
146
|
+
sage: GradedModulesWithBasis(QQ).example() # indirect doctest # needs sage.modules
|
|
147
|
+
An example of a graded module with basis: the free module on partitions over Rational Field
|
|
148
|
+
"""
|
|
149
|
+
return "An example of a graded module with basis: the free module on partitions over %s" % self.base_ring()
|
|
150
|
+
|
|
151
|
+
def _repr_term(self, t):
|
|
152
|
+
"""
|
|
153
|
+
Print representation for the basis element represented by the
|
|
154
|
+
partition ``t``.
|
|
155
|
+
|
|
156
|
+
This governs the behavior of the print representation of all elements
|
|
157
|
+
of the algebra.
|
|
158
|
+
|
|
159
|
+
EXAMPLES::
|
|
160
|
+
|
|
161
|
+
sage: A = GradedModulesWithBasis(QQ).example() # needs sage.modules
|
|
162
|
+
sage: A._repr_term(Partition((4,2,1))) # needs sage.modules
|
|
163
|
+
'P[4, 2, 1]'
|
|
164
|
+
"""
|
|
165
|
+
return 'P' + t._repr_()
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
Example = GradedPartitionModule
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
"""
|
|
3
|
+
Examples of graphs
|
|
4
|
+
"""
|
|
5
|
+
# ****************************************************************************
|
|
6
|
+
# Copyright (C) 2015 Travis Scrimshaw <tscrim at ucdavis.edu>
|
|
7
|
+
#
|
|
8
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
9
|
+
# https://www.gnu.org/licenses/
|
|
10
|
+
# *****************************************************************************
|
|
11
|
+
from sage.structure.parent import Parent
|
|
12
|
+
from sage.structure.unique_representation import UniqueRepresentation
|
|
13
|
+
from sage.structure.element_wrapper import ElementWrapper
|
|
14
|
+
from sage.categories.graphs import Graphs
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class Cycle(UniqueRepresentation, Parent):
|
|
18
|
+
r"""
|
|
19
|
+
An example of a graph: the cycle of length `n`.
|
|
20
|
+
|
|
21
|
+
This class illustrates a minimal implementation of a graph.
|
|
22
|
+
|
|
23
|
+
EXAMPLES::
|
|
24
|
+
|
|
25
|
+
sage: from sage.categories.graphs import Graphs
|
|
26
|
+
sage: C = Graphs().example(); C
|
|
27
|
+
An example of a graph: the 5-cycle
|
|
28
|
+
|
|
29
|
+
sage: C.category()
|
|
30
|
+
Category of graphs
|
|
31
|
+
|
|
32
|
+
We conclude by running systematic tests on this graph::
|
|
33
|
+
|
|
34
|
+
sage: TestSuite(C).run()
|
|
35
|
+
"""
|
|
36
|
+
def __init__(self, n=5):
|
|
37
|
+
r"""
|
|
38
|
+
EXAMPLES::
|
|
39
|
+
|
|
40
|
+
sage: from sage.categories.graphs import Graphs
|
|
41
|
+
sage: C = Graphs().example(6); C
|
|
42
|
+
An example of a graph: the 6-cycle
|
|
43
|
+
|
|
44
|
+
TESTS::
|
|
45
|
+
|
|
46
|
+
sage: TestSuite(C).run()
|
|
47
|
+
"""
|
|
48
|
+
self._n = n
|
|
49
|
+
Parent.__init__(self, category=Graphs())
|
|
50
|
+
|
|
51
|
+
def _repr_(self):
|
|
52
|
+
r"""
|
|
53
|
+
TESTS::
|
|
54
|
+
|
|
55
|
+
sage: from sage.categories.graphs import Graphs
|
|
56
|
+
sage: Graphs().example()
|
|
57
|
+
An example of a graph: the 5-cycle
|
|
58
|
+
"""
|
|
59
|
+
return "An example of a graph: the {}-cycle".format(self._n)
|
|
60
|
+
|
|
61
|
+
def an_element(self):
|
|
62
|
+
r"""
|
|
63
|
+
Return an element of the graph, as per
|
|
64
|
+
:meth:`Sets.ParentMethods.an_element`.
|
|
65
|
+
|
|
66
|
+
EXAMPLES::
|
|
67
|
+
|
|
68
|
+
sage: from sage.categories.graphs import Graphs
|
|
69
|
+
sage: C = Graphs().example()
|
|
70
|
+
sage: C.an_element()
|
|
71
|
+
0
|
|
72
|
+
"""
|
|
73
|
+
return self(0)
|
|
74
|
+
|
|
75
|
+
def vertices(self):
|
|
76
|
+
"""
|
|
77
|
+
Return the vertices of ``self``.
|
|
78
|
+
|
|
79
|
+
EXAMPLES::
|
|
80
|
+
|
|
81
|
+
sage: from sage.categories.graphs import Graphs
|
|
82
|
+
sage: C = Graphs().example()
|
|
83
|
+
sage: C.vertices()
|
|
84
|
+
[0, 1, 2, 3, 4]
|
|
85
|
+
"""
|
|
86
|
+
return [self(i) for i in range(self._n)]
|
|
87
|
+
|
|
88
|
+
def edges(self):
|
|
89
|
+
"""
|
|
90
|
+
Return the edges of ``self``.
|
|
91
|
+
|
|
92
|
+
EXAMPLES::
|
|
93
|
+
|
|
94
|
+
sage: from sage.categories.graphs import Graphs
|
|
95
|
+
sage: C = Graphs().example()
|
|
96
|
+
sage: C.edges()
|
|
97
|
+
[(0, 1), (1, 2), (2, 3), (3, 4), (4, 0)]
|
|
98
|
+
"""
|
|
99
|
+
return [self( (i, (i+1) % self._n) ) for i in range(self._n)]
|
|
100
|
+
|
|
101
|
+
class Element(ElementWrapper):
|
|
102
|
+
def dimension(self):
|
|
103
|
+
"""
|
|
104
|
+
Return the dimension of ``self``.
|
|
105
|
+
|
|
106
|
+
EXAMPLES::
|
|
107
|
+
|
|
108
|
+
sage: from sage.categories.graphs import Graphs
|
|
109
|
+
sage: C = Graphs().example()
|
|
110
|
+
sage: e = C.edges()[0]
|
|
111
|
+
sage: e.dimension()
|
|
112
|
+
2
|
|
113
|
+
sage: v = C.vertices()[0]
|
|
114
|
+
sage: v.dimension()
|
|
115
|
+
1
|
|
116
|
+
"""
|
|
117
|
+
if isinstance(self.value, tuple):
|
|
118
|
+
return 2
|
|
119
|
+
return 1
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
Example = Cycle
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
# sage.doctest: needs sage.groups sage.modules
|
|
3
|
+
r"""
|
|
4
|
+
Examples of Hopf algebras with basis
|
|
5
|
+
"""
|
|
6
|
+
#*****************************************************************************
|
|
7
|
+
# Copyright (C) 2008-2009 Nicolas M. Thiery <nthiery at users.sf.net>
|
|
8
|
+
#
|
|
9
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
10
|
+
# http://www.gnu.org/licenses/
|
|
11
|
+
#******************************************************************************
|
|
12
|
+
|
|
13
|
+
from sage.misc.cachefunc import cached_method
|
|
14
|
+
from sage.sets.family import Family
|
|
15
|
+
from sage.categories.hopf_algebras_with_basis import HopfAlgebrasWithBasis
|
|
16
|
+
from sage.combinat.free_module import CombinatorialFreeModule
|
|
17
|
+
from sage.categories.tensor import tensor
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class MyGroupAlgebra(CombinatorialFreeModule):
|
|
21
|
+
r"""
|
|
22
|
+
An example of a Hopf algebra with basis: the group algebra of a group.
|
|
23
|
+
|
|
24
|
+
This class illustrates a minimal implementation of a Hopf algebra with basis.
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
def __init__(self, R, G):
|
|
28
|
+
"""
|
|
29
|
+
EXAMPLES::
|
|
30
|
+
|
|
31
|
+
sage: from sage.categories.examples.hopf_algebras_with_basis import MyGroupAlgebra
|
|
32
|
+
sage: A = MyGroupAlgebra(QQ, DihedralGroup(6))
|
|
33
|
+
sage: A.category()
|
|
34
|
+
Category of finite dimensional Hopf algebras with basis over Rational Field
|
|
35
|
+
sage: TestSuite(A).run()
|
|
36
|
+
"""
|
|
37
|
+
self._group = G
|
|
38
|
+
CombinatorialFreeModule.__init__(self, R, G,
|
|
39
|
+
category=HopfAlgebrasWithBasis(R))
|
|
40
|
+
|
|
41
|
+
def _repr_(self):
|
|
42
|
+
"""
|
|
43
|
+
EXAMPLES::
|
|
44
|
+
|
|
45
|
+
sage: HopfAlgebrasWithBasis(QQ).example() # indirect doctest
|
|
46
|
+
An example of Hopf algebra with basis: the group algebra of the Dihedral group of order 6 as a permutation group over Rational Field
|
|
47
|
+
"""
|
|
48
|
+
return "An example of Hopf algebra with basis: the group algebra of the %s over %s" % (self._group, self.base_ring())
|
|
49
|
+
|
|
50
|
+
@cached_method
|
|
51
|
+
def one_basis(self):
|
|
52
|
+
"""
|
|
53
|
+
Return the one of the group, which index the one of this algebra,
|
|
54
|
+
as per :meth:`AlgebrasWithBasis.ParentMethods.one_basis`.
|
|
55
|
+
|
|
56
|
+
EXAMPLES::
|
|
57
|
+
|
|
58
|
+
sage: A = HopfAlgebrasWithBasis(QQ).example()
|
|
59
|
+
sage: A.one_basis()
|
|
60
|
+
()
|
|
61
|
+
sage: A.one()
|
|
62
|
+
B[()]
|
|
63
|
+
"""
|
|
64
|
+
return self._group.one()
|
|
65
|
+
|
|
66
|
+
def product_on_basis(self, g1, g2):
|
|
67
|
+
r"""
|
|
68
|
+
Product, on basis elements, as per
|
|
69
|
+
:meth:`AlgebrasWithBasis.ParentMethods.product_on_basis`.
|
|
70
|
+
|
|
71
|
+
The product of two basis elements is induced by the product of
|
|
72
|
+
the corresponding elements of the group.
|
|
73
|
+
|
|
74
|
+
EXAMPLES::
|
|
75
|
+
|
|
76
|
+
sage: A = HopfAlgebrasWithBasis(QQ).example()
|
|
77
|
+
sage: (a, b) = A._group.gens()
|
|
78
|
+
sage: a*b
|
|
79
|
+
(1,2)
|
|
80
|
+
sage: A.product_on_basis(a, b)
|
|
81
|
+
B[(1,2)]
|
|
82
|
+
"""
|
|
83
|
+
return self.basis()[g1 * g2]
|
|
84
|
+
|
|
85
|
+
@cached_method
|
|
86
|
+
def algebra_generators(self):
|
|
87
|
+
r"""
|
|
88
|
+
Return the generators of this algebra, as per :meth:`~.magmatic_algebras.MagmaticAlgebras.ParentMethods.algebra_generators`.
|
|
89
|
+
|
|
90
|
+
They correspond to the generators of the group.
|
|
91
|
+
|
|
92
|
+
EXAMPLES::
|
|
93
|
+
|
|
94
|
+
sage: A = HopfAlgebrasWithBasis(QQ).example(); A
|
|
95
|
+
An example of Hopf algebra with basis: the group algebra of the Dihedral group of order 6 as a permutation group over Rational Field
|
|
96
|
+
sage: A.algebra_generators()
|
|
97
|
+
Finite family {(1,2,3): B[(1,2,3)], (1,3): B[(1,3)]}
|
|
98
|
+
"""
|
|
99
|
+
return Family(self._group.gens(), self.monomial)
|
|
100
|
+
|
|
101
|
+
def coproduct_on_basis(self, g):
|
|
102
|
+
r"""
|
|
103
|
+
Coproduct, on basis elements, as per :meth:`HopfAlgebrasWithBasis.ParentMethods.coproduct_on_basis`.
|
|
104
|
+
|
|
105
|
+
The basis elements are group like: `\Delta(g) = g \otimes g`.
|
|
106
|
+
|
|
107
|
+
EXAMPLES::
|
|
108
|
+
|
|
109
|
+
sage: A = HopfAlgebrasWithBasis(QQ).example()
|
|
110
|
+
sage: (a, b) = A._group.gens()
|
|
111
|
+
sage: A.coproduct_on_basis(a)
|
|
112
|
+
B[(1,2,3)] # B[(1,2,3)]
|
|
113
|
+
"""
|
|
114
|
+
g = self.monomial(g)
|
|
115
|
+
return tensor([g, g])
|
|
116
|
+
|
|
117
|
+
def counit_on_basis(self, g):
|
|
118
|
+
r"""
|
|
119
|
+
Counit, on basis elements, as per :meth:`HopfAlgebrasWithBasis.ParentMethods.counit_on_basis`.
|
|
120
|
+
|
|
121
|
+
The counit on the basis elements is 1.
|
|
122
|
+
|
|
123
|
+
EXAMPLES::
|
|
124
|
+
|
|
125
|
+
sage: A = HopfAlgebrasWithBasis(QQ).example()
|
|
126
|
+
sage: (a, b) = A._group.gens()
|
|
127
|
+
sage: A.counit_on_basis(a)
|
|
128
|
+
1
|
|
129
|
+
"""
|
|
130
|
+
return self.base_ring().one()
|
|
131
|
+
|
|
132
|
+
def antipode_on_basis(self, g):
|
|
133
|
+
r"""
|
|
134
|
+
Antipode, on basis elements, as per :meth:`HopfAlgebrasWithBasis.ParentMethods.antipode_on_basis`.
|
|
135
|
+
|
|
136
|
+
It is given, on basis elements, by `\nu(g) = g^{-1}`
|
|
137
|
+
|
|
138
|
+
EXAMPLES::
|
|
139
|
+
|
|
140
|
+
sage: A = HopfAlgebrasWithBasis(QQ).example()
|
|
141
|
+
sage: (a, b) = A._group.gens()
|
|
142
|
+
sage: A.antipode_on_basis(a)
|
|
143
|
+
B[(1,3,2)]
|
|
144
|
+
"""
|
|
145
|
+
return self.monomial(~g)
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
"""
|
|
3
|
+
Examples of infinite enumerated sets
|
|
4
|
+
"""
|
|
5
|
+
# ****************************************************************************
|
|
6
|
+
# Copyright (C) 2009 Florent Hivert <Florent.Hivert@univ-rouen.fr>
|
|
7
|
+
#
|
|
8
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
9
|
+
# https://www.gnu.org/licenses/
|
|
10
|
+
# ****************************************************************************
|
|
11
|
+
|
|
12
|
+
from sage.structure.parent import Parent
|
|
13
|
+
from sage.categories.infinite_enumerated_sets import InfiniteEnumeratedSets
|
|
14
|
+
from sage.structure.unique_representation import UniqueRepresentation
|
|
15
|
+
from sage.rings.integer import Integer
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class NonNegativeIntegers(UniqueRepresentation, Parent):
|
|
19
|
+
r"""
|
|
20
|
+
An example of infinite enumerated set: the nonnegative integers.
|
|
21
|
+
|
|
22
|
+
This class provides a minimal implementation of an infinite enumerated set.
|
|
23
|
+
|
|
24
|
+
EXAMPLES::
|
|
25
|
+
|
|
26
|
+
sage: NN = InfiniteEnumeratedSets().example()
|
|
27
|
+
sage: NN
|
|
28
|
+
An example of an infinite enumerated set: the nonnegative integers
|
|
29
|
+
sage: NN.cardinality()
|
|
30
|
+
+Infinity
|
|
31
|
+
sage: NN.list()
|
|
32
|
+
Traceback (most recent call last):
|
|
33
|
+
...
|
|
34
|
+
NotImplementedError: cannot list an infinite set
|
|
35
|
+
sage: NN.element_class
|
|
36
|
+
<class 'sage.rings.integer.Integer'>
|
|
37
|
+
sage: it = iter(NN)
|
|
38
|
+
sage: [next(it), next(it), next(it), next(it), next(it)]
|
|
39
|
+
[0, 1, 2, 3, 4]
|
|
40
|
+
sage: x = next(it); type(x)
|
|
41
|
+
<class 'sage.rings.integer.Integer'>
|
|
42
|
+
sage: x.parent()
|
|
43
|
+
Integer Ring
|
|
44
|
+
sage: x+3
|
|
45
|
+
8
|
|
46
|
+
sage: NN(15)
|
|
47
|
+
15
|
|
48
|
+
sage: NN.first()
|
|
49
|
+
0
|
|
50
|
+
|
|
51
|
+
This checks that the different methods of `NN` return consistent
|
|
52
|
+
results::
|
|
53
|
+
|
|
54
|
+
sage: TestSuite(NN).run(verbose = True)
|
|
55
|
+
running ._test_an_element() . . . pass
|
|
56
|
+
running ._test_cardinality() . . . pass
|
|
57
|
+
running ._test_category() . . . pass
|
|
58
|
+
running ._test_construction() . . . pass
|
|
59
|
+
running ._test_elements() . . .
|
|
60
|
+
Running the test suite of self.an_element()
|
|
61
|
+
running ._test_category() . . . pass
|
|
62
|
+
running ._test_eq() . . . pass
|
|
63
|
+
running ._test_new() . . . pass
|
|
64
|
+
running ._test_nonzero_equal() . . . pass
|
|
65
|
+
running ._test_not_implemented_methods() . . . pass
|
|
66
|
+
running ._test_pickling() . . . pass
|
|
67
|
+
pass
|
|
68
|
+
running ._test_elements_eq_reflexive() . . . pass
|
|
69
|
+
running ._test_elements_eq_symmetric() . . . pass
|
|
70
|
+
running ._test_elements_eq_transitive() . . . pass
|
|
71
|
+
running ._test_elements_neq() . . . pass
|
|
72
|
+
running ._test_enumerated_set_contains() . . . pass
|
|
73
|
+
running ._test_enumerated_set_iter_cardinality() . . . pass
|
|
74
|
+
running ._test_enumerated_set_iter_list() . . . pass
|
|
75
|
+
running ._test_eq() . . . pass
|
|
76
|
+
running ._test_new() . . . pass
|
|
77
|
+
running ._test_not_implemented_methods() . . . pass
|
|
78
|
+
running ._test_pickling() . . . pass
|
|
79
|
+
running ._test_some_elements() . . . pass
|
|
80
|
+
"""
|
|
81
|
+
|
|
82
|
+
def __init__(self):
|
|
83
|
+
"""
|
|
84
|
+
TESTS::
|
|
85
|
+
|
|
86
|
+
sage: NN = InfiniteEnumeratedSets().example()
|
|
87
|
+
sage: NN
|
|
88
|
+
An example of an infinite enumerated set: the nonnegative integers
|
|
89
|
+
sage: NN.category()
|
|
90
|
+
Category of infinite enumerated sets
|
|
91
|
+
sage: TestSuite(NN).run()
|
|
92
|
+
"""
|
|
93
|
+
Parent.__init__(self, category=InfiniteEnumeratedSets())
|
|
94
|
+
|
|
95
|
+
def _repr_(self):
|
|
96
|
+
"""
|
|
97
|
+
TESTS::
|
|
98
|
+
|
|
99
|
+
sage: InfiniteEnumeratedSets().example() # indirect doctest
|
|
100
|
+
An example of an infinite enumerated set: the nonnegative integers
|
|
101
|
+
"""
|
|
102
|
+
return "An example of an infinite enumerated set: the nonnegative integers"
|
|
103
|
+
|
|
104
|
+
def __contains__(self, elt):
|
|
105
|
+
"""
|
|
106
|
+
EXAMPLES::
|
|
107
|
+
|
|
108
|
+
sage: NN = InfiniteEnumeratedSets().example()
|
|
109
|
+
sage: 1 in NN
|
|
110
|
+
True
|
|
111
|
+
sage: -1 in NN
|
|
112
|
+
False
|
|
113
|
+
"""
|
|
114
|
+
return Integer(elt) >= Integer(0)
|
|
115
|
+
|
|
116
|
+
def __iter__(self):
|
|
117
|
+
"""
|
|
118
|
+
EXAMPLES::
|
|
119
|
+
|
|
120
|
+
sage: NN = InfiniteEnumeratedSets().example()
|
|
121
|
+
sage: g = iter(NN)
|
|
122
|
+
sage: next(g), next(g), next(g), next(g)
|
|
123
|
+
(0, 1, 2, 3)
|
|
124
|
+
"""
|
|
125
|
+
i = Integer(0)
|
|
126
|
+
while True:
|
|
127
|
+
yield self._element_constructor_(i)
|
|
128
|
+
i += 1
|
|
129
|
+
|
|
130
|
+
def __call__(self, elt):
|
|
131
|
+
"""
|
|
132
|
+
EXAMPLES::
|
|
133
|
+
|
|
134
|
+
sage: NN = InfiniteEnumeratedSets().example()
|
|
135
|
+
sage: NN(3) # indirect doctest
|
|
136
|
+
3
|
|
137
|
+
sage: NN(3).parent()
|
|
138
|
+
Integer Ring
|
|
139
|
+
sage: NN(-1)
|
|
140
|
+
Traceback (most recent call last):
|
|
141
|
+
...
|
|
142
|
+
ValueError: Value -1 is not a nonnegative integer.
|
|
143
|
+
"""
|
|
144
|
+
if elt in self:
|
|
145
|
+
return self._element_constructor_(elt)
|
|
146
|
+
raise ValueError("Value %s is not a nonnegative integer." % (elt))
|
|
147
|
+
|
|
148
|
+
def an_element(self):
|
|
149
|
+
"""
|
|
150
|
+
EXAMPLES::
|
|
151
|
+
|
|
152
|
+
sage: InfiniteEnumeratedSets().example().an_element()
|
|
153
|
+
42
|
|
154
|
+
"""
|
|
155
|
+
return self._element_constructor_(Integer(42))
|
|
156
|
+
|
|
157
|
+
def next(self, o):
|
|
158
|
+
"""
|
|
159
|
+
EXAMPLES::
|
|
160
|
+
|
|
161
|
+
sage: NN = InfiniteEnumeratedSets().example()
|
|
162
|
+
sage: NN.next(3)
|
|
163
|
+
4
|
|
164
|
+
"""
|
|
165
|
+
return self._element_constructor_(o+1)
|
|
166
|
+
|
|
167
|
+
def _element_constructor_(self, i):
|
|
168
|
+
"""
|
|
169
|
+
The default implementation of _element_constructor_ assumes
|
|
170
|
+
that the constructor of the element class takes the parent as
|
|
171
|
+
parameter. This is not the case for ``Integer``, so we need to
|
|
172
|
+
provide an implementation.
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
TESTS::
|
|
176
|
+
|
|
177
|
+
sage: NN = InfiniteEnumeratedSets().example()
|
|
178
|
+
sage: x = NN(42); x
|
|
179
|
+
42
|
|
180
|
+
sage: type(x)
|
|
181
|
+
<class 'sage.rings.integer.Integer'>
|
|
182
|
+
sage: x.parent()
|
|
183
|
+
Integer Ring
|
|
184
|
+
"""
|
|
185
|
+
return self.element_class(i)
|
|
186
|
+
|
|
187
|
+
Element = Integer
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
Example = NonNegativeIntegers
|