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,87 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Noetherian rings
|
|
4
|
+
|
|
5
|
+
EXAMPLES::
|
|
6
|
+
|
|
7
|
+
sage: from sage.categories.noetherian_rings import NoetherianRings
|
|
8
|
+
sage: GF(4, "a") in NoetherianRings() # needs sage.rings.finite_rings
|
|
9
|
+
True
|
|
10
|
+
sage: QQ in NoetherianRings()
|
|
11
|
+
True
|
|
12
|
+
sage: ZZ in NoetherianRings()
|
|
13
|
+
True
|
|
14
|
+
sage: IntegerModRing(4) in NoetherianRings()
|
|
15
|
+
True
|
|
16
|
+
sage: IntegerModRing(5) in NoetherianRings()
|
|
17
|
+
True
|
|
18
|
+
"""
|
|
19
|
+
# ****************************************************************************
|
|
20
|
+
# Copyright (C) 2008 Teresa Gomez-Diaz (CNRS) <Teresa.Gomez-Diaz@univ-mlv.fr>
|
|
21
|
+
# 2012 Nicolas M. Thiery <nthiery at users.sf.net>
|
|
22
|
+
#
|
|
23
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
24
|
+
# https://www.gnu.org/licenses/
|
|
25
|
+
# *****************************************************************************
|
|
26
|
+
|
|
27
|
+
from sage.categories.category import Category
|
|
28
|
+
from sage.categories.commutative_rings import CommutativeRings
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class NoetherianRings(Category):
|
|
32
|
+
"""
|
|
33
|
+
The category of Noetherian rings.
|
|
34
|
+
|
|
35
|
+
A Noetherian ring is a commutative ring in which
|
|
36
|
+
every ideal is finitely generated.
|
|
37
|
+
|
|
38
|
+
See :wikipedia:`Noetherian ring`
|
|
39
|
+
|
|
40
|
+
EXAMPLES::
|
|
41
|
+
|
|
42
|
+
sage: from sage.categories.noetherian_rings import NoetherianRings
|
|
43
|
+
sage: C = NoetherianRings(); C
|
|
44
|
+
Category of noetherian rings
|
|
45
|
+
sage: sorted(C.super_categories(), key=str)
|
|
46
|
+
[Category of commutative rings]
|
|
47
|
+
|
|
48
|
+
TESTS::
|
|
49
|
+
|
|
50
|
+
sage: TestSuite(C).run()
|
|
51
|
+
"""
|
|
52
|
+
def super_categories(self):
|
|
53
|
+
"""
|
|
54
|
+
EXAMPLES::
|
|
55
|
+
|
|
56
|
+
sage: from sage.categories.noetherian_rings import NoetherianRings
|
|
57
|
+
sage: NoetherianRings().super_categories()
|
|
58
|
+
[Category of commutative rings]
|
|
59
|
+
"""
|
|
60
|
+
return [CommutativeRings()]
|
|
61
|
+
|
|
62
|
+
class ParentMethods:
|
|
63
|
+
def is_noetherian(self, proof=True):
|
|
64
|
+
r"""
|
|
65
|
+
Return ``True``, since this in an object of the category
|
|
66
|
+
of Noetherian rings.
|
|
67
|
+
|
|
68
|
+
EXAMPLES::
|
|
69
|
+
|
|
70
|
+
sage: ZZ.is_noetherian()
|
|
71
|
+
True
|
|
72
|
+
sage: QQ.is_noetherian()
|
|
73
|
+
True
|
|
74
|
+
sage: ZZ['x'].is_noetherian()
|
|
75
|
+
True
|
|
76
|
+
sage: R.<x> = PolynomialRing(QQ)
|
|
77
|
+
sage: R.is_noetherian()
|
|
78
|
+
True
|
|
79
|
+
|
|
80
|
+
sage: L.<z> = LazyLaurentSeriesRing(QQ) # needs sage.combinat
|
|
81
|
+
sage: L.is_noetherian() # needs sage.combinat
|
|
82
|
+
True
|
|
83
|
+
"""
|
|
84
|
+
return True
|
|
85
|
+
|
|
86
|
+
class ElementMethods:
|
|
87
|
+
pass
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Number fields
|
|
4
|
+
"""
|
|
5
|
+
# ****************************************************************************
|
|
6
|
+
# Copyright (C) 2005 David Kohel <kohel@maths.usyd.edu>
|
|
7
|
+
# William Stein <wstein@math.ucsd.edu>
|
|
8
|
+
# 2008 Teresa Gomez-Diaz (CNRS) <Teresa.Gomez-Diaz@univ-mlv.fr>
|
|
9
|
+
# 2008-2009 Nicolas M. Thiery <nthiery at users.sf.net>
|
|
10
|
+
#
|
|
11
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
12
|
+
# https://www.gnu.org/licenses/
|
|
13
|
+
# *****************************************************************************
|
|
14
|
+
|
|
15
|
+
from sage.categories.category_singleton import Category_singleton
|
|
16
|
+
from sage.categories.basic import Fields
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class NumberFields(Category_singleton):
|
|
20
|
+
r"""
|
|
21
|
+
The category of number fields.
|
|
22
|
+
|
|
23
|
+
EXAMPLES:
|
|
24
|
+
|
|
25
|
+
We create the category of number fields::
|
|
26
|
+
|
|
27
|
+
sage: C = NumberFields()
|
|
28
|
+
sage: C
|
|
29
|
+
Category of number fields
|
|
30
|
+
|
|
31
|
+
By definition, it is infinite::
|
|
32
|
+
|
|
33
|
+
sage: NumberFields().Infinite() is NumberFields()
|
|
34
|
+
True
|
|
35
|
+
|
|
36
|
+
Notice that the rational numbers `\QQ` *are* considered as
|
|
37
|
+
an object in this category::
|
|
38
|
+
|
|
39
|
+
sage: RationalField() in C
|
|
40
|
+
True
|
|
41
|
+
|
|
42
|
+
However, we can define a degree 1 extension of `\QQ`, which is of
|
|
43
|
+
course also in this category::
|
|
44
|
+
|
|
45
|
+
sage: x = PolynomialRing(RationalField(), 'x').gen()
|
|
46
|
+
sage: K = NumberField(x - 1, 'a'); K # needs sage.rings.number_field
|
|
47
|
+
Number Field in a with defining polynomial x - 1
|
|
48
|
+
sage: K in C # needs sage.rings.number_field
|
|
49
|
+
True
|
|
50
|
+
|
|
51
|
+
Number fields all lie in this category, regardless of the name
|
|
52
|
+
of the variable::
|
|
53
|
+
|
|
54
|
+
sage: K = NumberField(x^2 + 1, 'a') # needs sage.rings.number_field
|
|
55
|
+
sage: K in C # needs sage.rings.number_field
|
|
56
|
+
True
|
|
57
|
+
|
|
58
|
+
TESTS::
|
|
59
|
+
|
|
60
|
+
sage: TestSuite(NumberFields()).run()
|
|
61
|
+
"""
|
|
62
|
+
|
|
63
|
+
def super_categories(self):
|
|
64
|
+
"""
|
|
65
|
+
EXAMPLES::
|
|
66
|
+
|
|
67
|
+
sage: NumberFields().super_categories()
|
|
68
|
+
[Category of infinite fields]
|
|
69
|
+
"""
|
|
70
|
+
return [Fields().Infinite()]
|
|
71
|
+
|
|
72
|
+
def __contains__(self, x):
|
|
73
|
+
r"""
|
|
74
|
+
Return ``True`` if ``x`` is a number field.
|
|
75
|
+
|
|
76
|
+
EXAMPLES::
|
|
77
|
+
|
|
78
|
+
sage: x = polygen(QQ, 'x')
|
|
79
|
+
sage: NumberField(x^2 + 1, 'a') in NumberFields() # needs sage.rings.number_field
|
|
80
|
+
True
|
|
81
|
+
sage: QuadraticField(-97, 'theta') in NumberFields() # needs sage.rings.number_field
|
|
82
|
+
True
|
|
83
|
+
sage: CyclotomicField(97) in NumberFields() # needs sage.rings.number_field
|
|
84
|
+
True
|
|
85
|
+
|
|
86
|
+
Note that the rational numbers QQ are a number field::
|
|
87
|
+
|
|
88
|
+
sage: QQ in NumberFields()
|
|
89
|
+
True
|
|
90
|
+
sage: ZZ in NumberFields()
|
|
91
|
+
False
|
|
92
|
+
"""
|
|
93
|
+
from sage.rings.number_field.number_field_base import NumberField
|
|
94
|
+
return isinstance(x, NumberField)
|
|
95
|
+
|
|
96
|
+
def _call_(self, x):
|
|
97
|
+
r"""
|
|
98
|
+
Construct an object in this category from the data in ``x``,
|
|
99
|
+
or raise a :exc:`TypeError`.
|
|
100
|
+
|
|
101
|
+
EXAMPLES::
|
|
102
|
+
|
|
103
|
+
sage: C = NumberFields()
|
|
104
|
+
sage: x = polygen(QQ, 'x')
|
|
105
|
+
|
|
106
|
+
sage: C(QQ)
|
|
107
|
+
Rational Field
|
|
108
|
+
|
|
109
|
+
sage: C(NumberField(x^2 + 1, 'a')) # needs sage.rings.number_field
|
|
110
|
+
Number Field in a with defining polynomial x^2 + 1
|
|
111
|
+
|
|
112
|
+
sage: C(UnitGroup(NumberField(x^2 + 1, 'a'))) # indirect doctest # needs sage.rings.number_field
|
|
113
|
+
Number Field in a with defining polynomial x^2 + 1
|
|
114
|
+
|
|
115
|
+
sage: C(ZZ)
|
|
116
|
+
Traceback (most recent call last):
|
|
117
|
+
...
|
|
118
|
+
TypeError: unable to canonically associate a number field to Integer Ring
|
|
119
|
+
"""
|
|
120
|
+
try:
|
|
121
|
+
return x.number_field()
|
|
122
|
+
except AttributeError:
|
|
123
|
+
raise TypeError("unable to canonically associate a number field to %s" % x)
|
|
124
|
+
|
|
125
|
+
class ParentMethods:
|
|
126
|
+
def zeta_function(self, prec=53,
|
|
127
|
+
max_imaginary_part=0,
|
|
128
|
+
max_asymp_coeffs=40, algorithm='pari'):
|
|
129
|
+
r"""
|
|
130
|
+
Return the Dedekind zeta function of this number field.
|
|
131
|
+
|
|
132
|
+
Actually, this returns an interface for computing with the
|
|
133
|
+
Dedekind zeta function `\zeta_F(s)` of the number field `F`.
|
|
134
|
+
|
|
135
|
+
INPUT:
|
|
136
|
+
|
|
137
|
+
- ``prec`` -- integer (default: 53); bits of precision
|
|
138
|
+
|
|
139
|
+
- ``max_imaginary_part`` -- real (default: 0)
|
|
140
|
+
|
|
141
|
+
- ``max_asymp_coeffs`` -- integer (default: 40)
|
|
142
|
+
|
|
143
|
+
- ``algorithm`` -- (default: ``'pari'``) either ``'gp'`` or
|
|
144
|
+
``'pari'``
|
|
145
|
+
|
|
146
|
+
OUTPUT: the zeta function of this number field
|
|
147
|
+
|
|
148
|
+
If algorithm is ``'gp'``, this returns an interface to Tim
|
|
149
|
+
Dokchitser's gp script for computing with `L`-functions.
|
|
150
|
+
|
|
151
|
+
If algorithm is ``'pari'``, this returns instead an interface to Pari's
|
|
152
|
+
own general implementation of `L`-functions.
|
|
153
|
+
|
|
154
|
+
EXAMPLES::
|
|
155
|
+
|
|
156
|
+
sage: # needs sage.libs.pari sage.schemes
|
|
157
|
+
sage: K.<a> = NumberField(ZZ['x'].0^2 + ZZ['x'].0 - 1) # needs sage.rings.number_field
|
|
158
|
+
sage: Z = K.zeta_function(); Z # needs sage.rings.number_field sage.symbolic
|
|
159
|
+
PARI zeta function associated to Number Field in a
|
|
160
|
+
with defining polynomial x^2 + x - 1
|
|
161
|
+
sage: Z(-1) # needs sage.rings.number_field sage.symbolic
|
|
162
|
+
0.0333333333333333
|
|
163
|
+
|
|
164
|
+
sage: # needs sage.libs.pari sage.schemes
|
|
165
|
+
sage: x = polygen(QQ, 'x')
|
|
166
|
+
sage: L.<a, b, c> = NumberField([x^2 - 5, x^2 + 3, x^2 + 1]) # needs sage.rings.number_field
|
|
167
|
+
sage: Z = L.zeta_function() # needs sage.rings.number_field sage.symbolic
|
|
168
|
+
sage: Z(5) # needs sage.rings.number_field sage.symbolic
|
|
169
|
+
1.00199015670185
|
|
170
|
+
|
|
171
|
+
Using the algorithm "pari"::
|
|
172
|
+
|
|
173
|
+
sage: # needs sage.libs.pari sage.schemes
|
|
174
|
+
sage: K.<a> = NumberField(ZZ['x'].0^2 + ZZ['x'].0 - 1) # needs sage.rings.number_field
|
|
175
|
+
sage: Z = K.zeta_function(algorithm='pari') # needs sage.rings.number_field sage.symbolic
|
|
176
|
+
sage: Z(-1) # needs sage.rings.number_field sage.symbolic
|
|
177
|
+
0.0333333333333333
|
|
178
|
+
|
|
179
|
+
sage: # needs sage.libs.pari sage.schemes
|
|
180
|
+
sage: x = polygen(QQ, 'x')
|
|
181
|
+
sage: L.<a, b, c> = NumberField([x^2 - 5, x^2 + 3, x^2 + 1]) # needs sage.rings.number_field
|
|
182
|
+
sage: Z = L.zeta_function(algorithm='pari') # needs sage.rings.number_field sage.symbolic
|
|
183
|
+
sage: Z(5) # needs sage.rings.number_field sage.symbolic
|
|
184
|
+
1.00199015670185
|
|
185
|
+
|
|
186
|
+
TESTS::
|
|
187
|
+
|
|
188
|
+
sage: # needs sage.libs.pari sage.schemes
|
|
189
|
+
sage: QQ.zeta_function() # needs sage.symbolic
|
|
190
|
+
PARI zeta function associated to Rational Field
|
|
191
|
+
"""
|
|
192
|
+
if algorithm == 'gp':
|
|
193
|
+
from sage.lfunctions.dokchitser import Dokchitser
|
|
194
|
+
r1, r2 = self.signature()
|
|
195
|
+
zero = [0]
|
|
196
|
+
one = [1]
|
|
197
|
+
Z = Dokchitser(conductor=abs(self.absolute_discriminant()),
|
|
198
|
+
gammaV=(r1 + r2) * zero + r2 * one,
|
|
199
|
+
weight=1,
|
|
200
|
+
eps=1,
|
|
201
|
+
poles=[1],
|
|
202
|
+
prec=prec)
|
|
203
|
+
s = 'nf = nfinit(%s);' % self.absolute_polynomial()
|
|
204
|
+
s += 'dzk = dirzetak(nf,cflength());'
|
|
205
|
+
Z.init_coeffs('dzk[k]', pari_precode=s,
|
|
206
|
+
max_imaginary_part=max_imaginary_part,
|
|
207
|
+
max_asymp_coeffs=max_asymp_coeffs)
|
|
208
|
+
Z.check_functional_equation()
|
|
209
|
+
Z.rename('Dokchitser Zeta function associated to %s' % self)
|
|
210
|
+
return Z
|
|
211
|
+
|
|
212
|
+
if algorithm == 'pari':
|
|
213
|
+
from sage.lfunctions.pari import lfun_number_field, LFunction
|
|
214
|
+
Z = LFunction(lfun_number_field(self), prec=prec)
|
|
215
|
+
Z.rename('PARI zeta function associated to %s' % self)
|
|
216
|
+
return Z
|
|
217
|
+
|
|
218
|
+
raise ValueError('algorithm must be "gp" or "pari"')
|
|
219
|
+
|
|
220
|
+
def _test_absolute_disc(self, **options):
|
|
221
|
+
r"""
|
|
222
|
+
Run basic tests for the method :meth:`absolute_discriminant` of ``self``.
|
|
223
|
+
|
|
224
|
+
See the documentation for :class:`TestSuite` for information on
|
|
225
|
+
further options.
|
|
226
|
+
|
|
227
|
+
INPUT:
|
|
228
|
+
|
|
229
|
+
- ``options`` -- any keyword arguments accepted by :meth:`_tester`
|
|
230
|
+
|
|
231
|
+
EXAMPLES::
|
|
232
|
+
|
|
233
|
+
sage: x = polygen(ZZ, 'x')
|
|
234
|
+
sage: S = NumberField(x**3 - x - 1, 'a') # needs sage.rings.number_field
|
|
235
|
+
sage: S._test_absolute_disc() # needs sage.rings.number_field
|
|
236
|
+
"""
|
|
237
|
+
from sage.rings.integer import Integer
|
|
238
|
+
tester = self._tester(**options)
|
|
239
|
+
tester.assertIsInstance(self.absolute_discriminant(), Integer)
|
|
240
|
+
|
|
241
|
+
class ElementMethods:
|
|
242
|
+
pass
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
from sage.misc.lazy_attribute import lazy_attribute
|
|
3
|
+
from sage.misc.lazy_import import lazy_import
|
|
4
|
+
|
|
5
|
+
from sage.categories.modules import Modules
|
|
6
|
+
from sage.categories.category_types import Category_over_base_ring
|
|
7
|
+
from sage.categories.homsets import Homsets
|
|
8
|
+
|
|
9
|
+
lazy_import('sage.rings.polynomial.ore_polynomial_ring', 'OrePolynomialRing')
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class OreModules(Category_over_base_ring):
|
|
13
|
+
r"""
|
|
14
|
+
Category of Ore modules.
|
|
15
|
+
"""
|
|
16
|
+
@staticmethod
|
|
17
|
+
def __classcall_private__(cls, ring, twist):
|
|
18
|
+
r"""
|
|
19
|
+
Normalize the input and call the init function.
|
|
20
|
+
|
|
21
|
+
INPUT:
|
|
22
|
+
|
|
23
|
+
- ``ring`` -- a commutative ring, the base ring of
|
|
24
|
+
the Ore modules
|
|
25
|
+
|
|
26
|
+
- ``twist`` -- a twisting morphism/derivation or a
|
|
27
|
+
Ore polynomial ring
|
|
28
|
+
|
|
29
|
+
TESTS::
|
|
30
|
+
|
|
31
|
+
sage: # needs sage.rings.finite_rings
|
|
32
|
+
sage: from sage.categories.ore_modules import OreModules
|
|
33
|
+
sage: K.<a> = GF(5^3)
|
|
34
|
+
sage: Frob = K.frobenius_endomorphism()
|
|
35
|
+
sage: cat = OreModules(K, Frob)
|
|
36
|
+
sage: cat
|
|
37
|
+
Category of Ore modules over Finite Field in a of size 5^3 twisted by a |--> a^5
|
|
38
|
+
sage: S = cat.ore_ring('y')
|
|
39
|
+
sage: cat is OreModules(K, S)
|
|
40
|
+
True
|
|
41
|
+
"""
|
|
42
|
+
if isinstance(twist, OrePolynomialRing):
|
|
43
|
+
ore = twist.change_var('x')
|
|
44
|
+
if ore.base_ring() is not ring:
|
|
45
|
+
raise ValueError("base rings do not match")
|
|
46
|
+
else:
|
|
47
|
+
ore = OrePolynomialRing(ring, twist, names='x', polcast=False)
|
|
48
|
+
return cls.__classcall__(cls, ore)
|
|
49
|
+
|
|
50
|
+
def __init__(self, ore):
|
|
51
|
+
r"""
|
|
52
|
+
Initialize this category.
|
|
53
|
+
|
|
54
|
+
TESTS::
|
|
55
|
+
|
|
56
|
+
sage: # needs sage.rings.finite_rings
|
|
57
|
+
sage: from sage.categories.ore_modules import OreModules
|
|
58
|
+
sage: K.<a> = GF(5^3)
|
|
59
|
+
sage: Frob = K.frobenius_endomorphism()
|
|
60
|
+
sage: cat = OreModules(K, Frob)
|
|
61
|
+
sage: TestSuite(cat).run()
|
|
62
|
+
"""
|
|
63
|
+
base = ore.base_ring()
|
|
64
|
+
Category_over_base_ring.__init__(self, base)
|
|
65
|
+
self._ore = ore
|
|
66
|
+
|
|
67
|
+
def __reduce__(self):
|
|
68
|
+
r"""
|
|
69
|
+
Return the arguments which were used to create this instance.
|
|
70
|
+
|
|
71
|
+
This method is needed for pickling.
|
|
72
|
+
|
|
73
|
+
TESTS::
|
|
74
|
+
|
|
75
|
+
sage: # needs sage.rings.finite_rings
|
|
76
|
+
sage: from sage.categories.ore_modules import OreModules
|
|
77
|
+
sage: K.<a> = GF(5^3)
|
|
78
|
+
sage: Frob = K.frobenius_endomorphism()
|
|
79
|
+
sage: cat = OreModules(K, Frob)
|
|
80
|
+
sage: cat2 = loads(dumps(cat)) # indirect doctest
|
|
81
|
+
sage: cat is cat2
|
|
82
|
+
True
|
|
83
|
+
"""
|
|
84
|
+
return OreModules, (self.base_ring(), self._ore)
|
|
85
|
+
|
|
86
|
+
def super_categories(self):
|
|
87
|
+
r"""
|
|
88
|
+
Return the immediate super categories of this category.
|
|
89
|
+
|
|
90
|
+
EXAMPLES::
|
|
91
|
+
|
|
92
|
+
sage: # needs sage.rings.finite_rings
|
|
93
|
+
sage: from sage.categories.ore_modules import OreModules
|
|
94
|
+
sage: K.<a> = GF(5^3)
|
|
95
|
+
sage: Frob = K.frobenius_endomorphism()
|
|
96
|
+
sage: cat = OreModules(K, Frob)
|
|
97
|
+
sage: cat.super_categories()
|
|
98
|
+
[Category of vector spaces over Finite Field in a of size 5^3]
|
|
99
|
+
"""
|
|
100
|
+
return [Modules(self.base())]
|
|
101
|
+
|
|
102
|
+
def _repr_object_names(self):
|
|
103
|
+
r"""
|
|
104
|
+
Return a string representation naming the objects
|
|
105
|
+
in this category.
|
|
106
|
+
|
|
107
|
+
EXAMPLES::
|
|
108
|
+
|
|
109
|
+
sage: # needs sage.rings.finite_rings
|
|
110
|
+
sage: from sage.categories.ore_modules import OreModules
|
|
111
|
+
sage: K.<a> = GF(5^3)
|
|
112
|
+
sage: Frob = K.frobenius_endomorphism()
|
|
113
|
+
sage: cat = OreModules(K, Frob)
|
|
114
|
+
sage: cat._repr_object_names()
|
|
115
|
+
'Ore modules over Finite Field in a of size 5^3 twisted by a |--> a^5'
|
|
116
|
+
"""
|
|
117
|
+
return "Ore modules over %s %s" % (self.base_ring(), self._ore._repr_twist())
|
|
118
|
+
|
|
119
|
+
def ore_ring(self, var='x'):
|
|
120
|
+
r"""
|
|
121
|
+
Return the underlying Ore polynomial ring.
|
|
122
|
+
|
|
123
|
+
INPUT:
|
|
124
|
+
|
|
125
|
+
- ``var`` (default; ``x``) -- the variable name
|
|
126
|
+
|
|
127
|
+
EXAMPLES::
|
|
128
|
+
|
|
129
|
+
sage: # needs sage.rings.finite_rings
|
|
130
|
+
sage: from sage.categories.ore_modules import OreModules
|
|
131
|
+
sage: K.<a> = GF(5^3)
|
|
132
|
+
sage: Frob = K.frobenius_endomorphism()
|
|
133
|
+
sage: cat = OreModules(K, Frob)
|
|
134
|
+
sage: cat.ore_ring()
|
|
135
|
+
Ore Polynomial Ring in x over Finite Field in a of size 5^3 twisted by a |--> a^5
|
|
136
|
+
sage: cat.ore_ring('y')
|
|
137
|
+
Ore Polynomial Ring in y over Finite Field in a of size 5^3 twisted by a |--> a^5
|
|
138
|
+
"""
|
|
139
|
+
return self._ore.change_var(var)
|
|
140
|
+
|
|
141
|
+
def twisting_morphism(self):
|
|
142
|
+
r"""
|
|
143
|
+
Return the underlying twisting morphism.
|
|
144
|
+
|
|
145
|
+
EXAMPLES::
|
|
146
|
+
|
|
147
|
+
sage: from sage.categories.ore_modules import OreModules
|
|
148
|
+
|
|
149
|
+
sage: # needs sage.rings.finite_rings
|
|
150
|
+
sage: K.<a> = GF(5^3)
|
|
151
|
+
sage: Frob = K.frobenius_endomorphism()
|
|
152
|
+
sage: cat = OreModules(K, Frob)
|
|
153
|
+
sage: cat.twisting_morphism()
|
|
154
|
+
Frobenius endomorphism a |--> a^5 on Finite Field in a of size 5^3
|
|
155
|
+
|
|
156
|
+
If the twisting morphism is the identity, nothing is returned::
|
|
157
|
+
|
|
158
|
+
sage: # needs sage.modules
|
|
159
|
+
sage: R.<t> = QQ[]
|
|
160
|
+
sage: d = R.derivation()
|
|
161
|
+
sage: cat = OreModules(R, d)
|
|
162
|
+
sage: cat.twisting_morphism()
|
|
163
|
+
"""
|
|
164
|
+
return self._ore.twisting_morphism()
|
|
165
|
+
|
|
166
|
+
def twisting_derivation(self):
|
|
167
|
+
r"""
|
|
168
|
+
Return the underlying twisting derivation.
|
|
169
|
+
|
|
170
|
+
EXAMPLES::
|
|
171
|
+
|
|
172
|
+
sage: from sage.categories.ore_modules import OreModules
|
|
173
|
+
|
|
174
|
+
sage: # needs sage.modules
|
|
175
|
+
sage: R.<t> = QQ[]
|
|
176
|
+
sage: d = R.derivation()
|
|
177
|
+
sage: cat = OreModules(R, d)
|
|
178
|
+
sage: cat.twisting_derivation()
|
|
179
|
+
d/dt
|
|
180
|
+
|
|
181
|
+
If the twisting derivation is zero, nothing is returned::
|
|
182
|
+
|
|
183
|
+
sage: # needs sage.rings.finite_rings
|
|
184
|
+
sage: K.<a> = GF(5^3)
|
|
185
|
+
sage: Frob = K.frobenius_endomorphism()
|
|
186
|
+
sage: cat = OreModules(K, Frob)
|
|
187
|
+
sage: cat.twisting_derivation()
|
|
188
|
+
"""
|
|
189
|
+
return self._ore.twisting_derivation()
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Partially ordered monoids
|
|
4
|
+
"""
|
|
5
|
+
#*****************************************************************************
|
|
6
|
+
# Copyright (C) 2008 Teresa Gomez-Diaz (CNRS) <Teresa.Gomez-Diaz@univ-mlv.fr>
|
|
7
|
+
#
|
|
8
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
9
|
+
# http://www.gnu.org/licenses/
|
|
10
|
+
#******************************************************************************
|
|
11
|
+
|
|
12
|
+
from sage.categories.category_singleton import Category_singleton
|
|
13
|
+
from sage.categories.basic import Posets, Monoids
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class PartiallyOrderedMonoids(Category_singleton):
|
|
17
|
+
r"""
|
|
18
|
+
The category of partially ordered monoids, that is partially ordered sets
|
|
19
|
+
which are also monoids, and such that multiplication preserves the
|
|
20
|
+
ordering: `x \leq y` implies `x*z < y*z` and `z*x < z*y`.
|
|
21
|
+
|
|
22
|
+
See :wikipedia:`Ordered_monoid`
|
|
23
|
+
|
|
24
|
+
EXAMPLES::
|
|
25
|
+
|
|
26
|
+
sage: PartiallyOrderedMonoids()
|
|
27
|
+
Category of partially ordered monoids
|
|
28
|
+
sage: PartiallyOrderedMonoids().super_categories()
|
|
29
|
+
[Category of posets, Category of monoids]
|
|
30
|
+
|
|
31
|
+
TESTS::
|
|
32
|
+
|
|
33
|
+
sage: TestSuite(PartiallyOrderedMonoids()).run()
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
def super_categories(self):
|
|
37
|
+
"""
|
|
38
|
+
EXAMPLES::
|
|
39
|
+
|
|
40
|
+
sage: PartiallyOrderedMonoids().super_categories()
|
|
41
|
+
[Category of posets, Category of monoids]
|
|
42
|
+
"""
|
|
43
|
+
return [Posets(), Monoids()]
|
|
44
|
+
|
|
45
|
+
class ParentMethods:
|
|
46
|
+
pass
|
|
47
|
+
|
|
48
|
+
class ElementMethods:
|
|
49
|
+
pass
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Permutation groups
|
|
4
|
+
"""
|
|
5
|
+
#*****************************************************************************
|
|
6
|
+
# Copyright (C) 2011 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.categories.category import Category
|
|
14
|
+
from sage.categories.groups import Groups
|
|
15
|
+
from sage.misc.lazy_import import LazyImport
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class PermutationGroups(Category):
|
|
19
|
+
r"""
|
|
20
|
+
The category of permutation groups.
|
|
21
|
+
|
|
22
|
+
A *permutation group* is a group whose elements are concretely
|
|
23
|
+
represented by permutations of some set. In other words, the group
|
|
24
|
+
comes endowed with a distinguished action on some set.
|
|
25
|
+
|
|
26
|
+
This distinguished action should be preserved by permutation group
|
|
27
|
+
morphisms. For details, see
|
|
28
|
+
:wikipedia:`Permutation_group#Permutation_isomorphic_groups`.
|
|
29
|
+
|
|
30
|
+
.. TODO:: shall we accept only permutations with finite support or not?
|
|
31
|
+
|
|
32
|
+
EXAMPLES::
|
|
33
|
+
|
|
34
|
+
sage: PermutationGroups()
|
|
35
|
+
Category of permutation groups
|
|
36
|
+
sage: PermutationGroups().super_categories()
|
|
37
|
+
[Category of groups]
|
|
38
|
+
|
|
39
|
+
The category of permutation groups defines additional structure
|
|
40
|
+
that should be preserved by morphisms, namely the distinguished
|
|
41
|
+
action::
|
|
42
|
+
|
|
43
|
+
sage: PermutationGroups().additional_structure()
|
|
44
|
+
Category of permutation groups
|
|
45
|
+
|
|
46
|
+
TESTS::
|
|
47
|
+
|
|
48
|
+
sage: C = PermutationGroups()
|
|
49
|
+
sage: TestSuite(C).run()
|
|
50
|
+
"""
|
|
51
|
+
@cached_method
|
|
52
|
+
def super_categories(self):
|
|
53
|
+
"""
|
|
54
|
+
Return a list of the immediate super categories of ``self``.
|
|
55
|
+
|
|
56
|
+
EXAMPLES::
|
|
57
|
+
|
|
58
|
+
sage: PermutationGroups().super_categories()
|
|
59
|
+
[Category of groups]
|
|
60
|
+
"""
|
|
61
|
+
return [Groups()]
|
|
62
|
+
|
|
63
|
+
Finite = LazyImport('sage.categories.finite_permutation_groups', 'FinitePermutationGroups')
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Pointed sets
|
|
4
|
+
"""
|
|
5
|
+
#*****************************************************************************
|
|
6
|
+
# Copyright (C) 2008 David Kohel <kohel@maths.usyd.edu> and
|
|
7
|
+
# William Stein <wstein@math.ucsd.edu>
|
|
8
|
+
# Nicolas M. Thiery <nthiery at users.sf.net>
|
|
9
|
+
#
|
|
10
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
11
|
+
# http://www.gnu.org/licenses/
|
|
12
|
+
#******************************************************************************
|
|
13
|
+
|
|
14
|
+
from sage.categories.category_singleton import Category_singleton
|
|
15
|
+
from sage.categories.sets_cat import Sets
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class PointedSets(Category_singleton):
|
|
19
|
+
"""
|
|
20
|
+
The category of pointed sets.
|
|
21
|
+
|
|
22
|
+
EXAMPLES::
|
|
23
|
+
|
|
24
|
+
sage: PointedSets()
|
|
25
|
+
Category of pointed sets
|
|
26
|
+
|
|
27
|
+
TESTS::
|
|
28
|
+
|
|
29
|
+
sage: TestSuite(PointedSets()).run()
|
|
30
|
+
"""
|
|
31
|
+
#def __call__(self, X, pt):
|
|
32
|
+
# import sage.sets.all
|
|
33
|
+
# return sage.sets.all.Set(X, pt)
|
|
34
|
+
|
|
35
|
+
def super_categories(self):
|
|
36
|
+
"""
|
|
37
|
+
EXAMPLES::
|
|
38
|
+
|
|
39
|
+
sage: PointedSets().super_categories()
|
|
40
|
+
[Category of sets]
|
|
41
|
+
"""
|
|
42
|
+
return [Sets()] # ???
|