passagemath-categories 10.6.31rc3__cp314-cp314-macosx_13_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- passagemath_categories-10.6.31rc3.dist-info/METADATA +156 -0
- passagemath_categories-10.6.31rc3.dist-info/RECORD +717 -0
- passagemath_categories-10.6.31rc3.dist-info/WHEEL +6 -0
- passagemath_categories-10.6.31rc3.dist-info/top_level.txt +2 -0
- passagemath_categories.dylibs/libgmp.10.dylib +0 -0
- sage/all__sagemath_categories.py +28 -0
- sage/arith/all.py +38 -0
- sage/arith/constants.pxd +27 -0
- sage/arith/functions.cpython-314-darwin.so +0 -0
- sage/arith/functions.pxd +4 -0
- sage/arith/functions.pyx +221 -0
- sage/arith/misc.py +6552 -0
- sage/arith/multi_modular.cpython-314-darwin.so +0 -0
- sage/arith/multi_modular.pxd +39 -0
- sage/arith/multi_modular.pyx +994 -0
- sage/arith/rational_reconstruction.cpython-314-darwin.so +0 -0
- sage/arith/rational_reconstruction.pxd +4 -0
- sage/arith/rational_reconstruction.pyx +115 -0
- sage/arith/srange.cpython-314-darwin.so +0 -0
- sage/arith/srange.pyx +571 -0
- sage/calculus/all__sagemath_categories.py +2 -0
- sage/calculus/functional.py +481 -0
- sage/calculus/functions.py +151 -0
- sage/categories/additive_groups.py +73 -0
- sage/categories/additive_magmas.py +1044 -0
- sage/categories/additive_monoids.py +114 -0
- sage/categories/additive_semigroups.py +184 -0
- sage/categories/affine_weyl_groups.py +238 -0
- sage/categories/algebra_ideals.py +95 -0
- sage/categories/algebra_modules.py +96 -0
- sage/categories/algebras.py +349 -0
- sage/categories/algebras_with_basis.py +377 -0
- sage/categories/all.py +160 -0
- sage/categories/aperiodic_semigroups.py +29 -0
- sage/categories/associative_algebras.py +47 -0
- sage/categories/bialgebras.py +101 -0
- sage/categories/bialgebras_with_basis.py +414 -0
- sage/categories/bimodules.py +206 -0
- sage/categories/chain_complexes.py +268 -0
- sage/categories/classical_crystals.py +480 -0
- sage/categories/coalgebras.py +405 -0
- sage/categories/coalgebras_with_basis.py +232 -0
- sage/categories/coercion_methods.cpython-314-darwin.so +0 -0
- sage/categories/coercion_methods.pyx +52 -0
- sage/categories/commutative_additive_groups.py +104 -0
- sage/categories/commutative_additive_monoids.py +45 -0
- sage/categories/commutative_additive_semigroups.py +48 -0
- sage/categories/commutative_algebra_ideals.py +87 -0
- sage/categories/commutative_algebras.py +94 -0
- sage/categories/commutative_ring_ideals.py +58 -0
- sage/categories/commutative_rings.py +736 -0
- sage/categories/complete_discrete_valuation.py +293 -0
- sage/categories/complex_reflection_groups.py +145 -0
- sage/categories/complex_reflection_or_generalized_coxeter_groups.py +1249 -0
- sage/categories/coxeter_group_algebras.py +186 -0
- sage/categories/coxeter_groups.py +3402 -0
- sage/categories/crystals.py +2628 -0
- sage/categories/cw_complexes.py +216 -0
- sage/categories/dedekind_domains.py +137 -0
- sage/categories/discrete_valuation.py +325 -0
- sage/categories/distributive_magmas_and_additive_magmas.py +100 -0
- sage/categories/division_rings.py +114 -0
- sage/categories/domains.py +95 -0
- sage/categories/drinfeld_modules.py +789 -0
- sage/categories/dual.py +42 -0
- sage/categories/enumerated_sets.py +1146 -0
- sage/categories/euclidean_domains.py +271 -0
- sage/categories/examples/algebras_with_basis.py +102 -0
- sage/categories/examples/all.py +1 -0
- sage/categories/examples/commutative_additive_monoids.py +130 -0
- sage/categories/examples/commutative_additive_semigroups.py +199 -0
- sage/categories/examples/coxeter_groups.py +8 -0
- sage/categories/examples/crystals.py +236 -0
- sage/categories/examples/cw_complexes.py +163 -0
- sage/categories/examples/facade_sets.py +187 -0
- sage/categories/examples/filtered_algebras_with_basis.py +204 -0
- sage/categories/examples/filtered_modules_with_basis.py +154 -0
- sage/categories/examples/finite_coxeter_groups.py +252 -0
- sage/categories/examples/finite_dimensional_algebras_with_basis.py +148 -0
- sage/categories/examples/finite_dimensional_lie_algebras_with_basis.py +495 -0
- sage/categories/examples/finite_enumerated_sets.py +208 -0
- sage/categories/examples/finite_monoids.py +150 -0
- sage/categories/examples/finite_semigroups.py +190 -0
- sage/categories/examples/finite_weyl_groups.py +191 -0
- sage/categories/examples/graded_connected_hopf_algebras_with_basis.py +152 -0
- sage/categories/examples/graded_modules_with_basis.py +168 -0
- sage/categories/examples/graphs.py +122 -0
- sage/categories/examples/hopf_algebras_with_basis.py +145 -0
- sage/categories/examples/infinite_enumerated_sets.py +190 -0
- sage/categories/examples/lie_algebras.py +352 -0
- sage/categories/examples/lie_algebras_with_basis.py +196 -0
- sage/categories/examples/magmas.py +162 -0
- sage/categories/examples/manifolds.py +94 -0
- sage/categories/examples/monoids.py +144 -0
- sage/categories/examples/posets.py +178 -0
- sage/categories/examples/semigroups.py +580 -0
- sage/categories/examples/semigroups_cython.cpython-314-darwin.so +0 -0
- sage/categories/examples/semigroups_cython.pyx +221 -0
- sage/categories/examples/semirings.py +249 -0
- sage/categories/examples/sets_cat.py +706 -0
- sage/categories/examples/sets_with_grading.py +101 -0
- sage/categories/examples/with_realizations.py +542 -0
- sage/categories/fields.py +991 -0
- sage/categories/filtered_algebras.py +63 -0
- sage/categories/filtered_algebras_with_basis.py +548 -0
- sage/categories/filtered_hopf_algebras_with_basis.py +138 -0
- sage/categories/filtered_modules.py +210 -0
- sage/categories/filtered_modules_with_basis.py +1209 -0
- sage/categories/finite_complex_reflection_groups.py +1506 -0
- sage/categories/finite_coxeter_groups.py +1138 -0
- sage/categories/finite_crystals.py +103 -0
- sage/categories/finite_dimensional_algebras_with_basis.py +1860 -0
- sage/categories/finite_dimensional_bialgebras_with_basis.py +33 -0
- sage/categories/finite_dimensional_coalgebras_with_basis.py +33 -0
- sage/categories/finite_dimensional_graded_lie_algebras_with_basis.py +231 -0
- sage/categories/finite_dimensional_hopf_algebras_with_basis.py +38 -0
- sage/categories/finite_dimensional_lie_algebras_with_basis.py +2774 -0
- sage/categories/finite_dimensional_modules_with_basis.py +1407 -0
- sage/categories/finite_dimensional_nilpotent_lie_algebras_with_basis.py +167 -0
- sage/categories/finite_dimensional_semisimple_algebras_with_basis.py +270 -0
- sage/categories/finite_enumerated_sets.py +769 -0
- sage/categories/finite_fields.py +252 -0
- sage/categories/finite_groups.py +256 -0
- sage/categories/finite_lattice_posets.py +242 -0
- sage/categories/finite_monoids.py +316 -0
- sage/categories/finite_permutation_groups.py +339 -0
- sage/categories/finite_posets.py +1994 -0
- sage/categories/finite_semigroups.py +136 -0
- sage/categories/finite_sets.py +93 -0
- sage/categories/finite_weyl_groups.py +39 -0
- sage/categories/finitely_generated_lambda_bracket_algebras.py +112 -0
- sage/categories/finitely_generated_lie_conformal_algebras.py +114 -0
- sage/categories/finitely_generated_magmas.py +57 -0
- sage/categories/finitely_generated_semigroups.py +214 -0
- sage/categories/function_fields.py +76 -0
- sage/categories/g_sets.py +77 -0
- sage/categories/gcd_domains.py +65 -0
- sage/categories/generalized_coxeter_groups.py +94 -0
- sage/categories/graded_algebras.py +85 -0
- sage/categories/graded_algebras_with_basis.py +258 -0
- sage/categories/graded_bialgebras.py +32 -0
- sage/categories/graded_bialgebras_with_basis.py +32 -0
- sage/categories/graded_coalgebras.py +65 -0
- sage/categories/graded_coalgebras_with_basis.py +51 -0
- sage/categories/graded_hopf_algebras.py +41 -0
- sage/categories/graded_hopf_algebras_with_basis.py +169 -0
- sage/categories/graded_lie_algebras.py +91 -0
- sage/categories/graded_lie_algebras_with_basis.py +44 -0
- sage/categories/graded_lie_conformal_algebras.py +74 -0
- sage/categories/graded_modules.py +133 -0
- sage/categories/graded_modules_with_basis.py +329 -0
- sage/categories/graphs.py +138 -0
- sage/categories/group_algebras.py +430 -0
- sage/categories/groupoid.py +94 -0
- sage/categories/groups.py +667 -0
- sage/categories/h_trivial_semigroups.py +64 -0
- sage/categories/hecke_modules.py +185 -0
- sage/categories/highest_weight_crystals.py +980 -0
- sage/categories/hopf_algebras.py +219 -0
- sage/categories/hopf_algebras_with_basis.py +309 -0
- sage/categories/infinite_enumerated_sets.py +115 -0
- sage/categories/integral_domains.py +203 -0
- sage/categories/j_trivial_semigroups.py +29 -0
- sage/categories/kac_moody_algebras.py +82 -0
- sage/categories/kahler_algebras.py +203 -0
- sage/categories/l_trivial_semigroups.py +63 -0
- sage/categories/lambda_bracket_algebras.py +280 -0
- sage/categories/lambda_bracket_algebras_with_basis.py +107 -0
- sage/categories/lattice_posets.py +89 -0
- sage/categories/left_modules.py +49 -0
- sage/categories/lie_algebras.py +1070 -0
- sage/categories/lie_algebras_with_basis.py +261 -0
- sage/categories/lie_conformal_algebras.py +350 -0
- sage/categories/lie_conformal_algebras_with_basis.py +147 -0
- sage/categories/lie_groups.py +73 -0
- sage/categories/loop_crystals.py +1290 -0
- sage/categories/magmas.py +1189 -0
- sage/categories/magmas_and_additive_magmas.py +149 -0
- sage/categories/magmatic_algebras.py +365 -0
- sage/categories/manifolds.py +352 -0
- sage/categories/matrix_algebras.py +40 -0
- sage/categories/metric_spaces.py +387 -0
- sage/categories/modular_abelian_varieties.py +78 -0
- sage/categories/modules.py +989 -0
- sage/categories/modules_with_basis.py +2794 -0
- sage/categories/monoid_algebras.py +38 -0
- sage/categories/monoids.py +739 -0
- sage/categories/noetherian_rings.py +87 -0
- sage/categories/number_fields.py +242 -0
- sage/categories/ore_modules.py +189 -0
- sage/categories/partially_ordered_monoids.py +49 -0
- sage/categories/permutation_groups.py +63 -0
- sage/categories/pointed_sets.py +42 -0
- sage/categories/polyhedra.py +74 -0
- sage/categories/poor_man_map.py +270 -0
- sage/categories/posets.py +722 -0
- sage/categories/principal_ideal_domains.py +270 -0
- sage/categories/quantum_group_representations.py +543 -0
- sage/categories/quotient_fields.py +728 -0
- sage/categories/r_trivial_semigroups.py +45 -0
- sage/categories/regular_crystals.py +898 -0
- sage/categories/regular_supercrystals.py +170 -0
- sage/categories/right_modules.py +49 -0
- sage/categories/ring_ideals.py +74 -0
- sage/categories/rings.py +1904 -0
- sage/categories/rngs.py +175 -0
- sage/categories/schemes.py +393 -0
- sage/categories/semigroups.py +1060 -0
- sage/categories/semirings.py +71 -0
- sage/categories/semisimple_algebras.py +114 -0
- sage/categories/sets_with_grading.py +235 -0
- sage/categories/shephard_groups.py +43 -0
- sage/categories/signed_tensor.py +120 -0
- sage/categories/simplicial_complexes.py +134 -0
- sage/categories/simplicial_sets.py +1206 -0
- sage/categories/super_algebras.py +149 -0
- sage/categories/super_algebras_with_basis.py +144 -0
- sage/categories/super_hopf_algebras_with_basis.py +126 -0
- sage/categories/super_lie_conformal_algebras.py +193 -0
- sage/categories/super_modules.py +229 -0
- sage/categories/super_modules_with_basis.py +193 -0
- sage/categories/supercommutative_algebras.py +99 -0
- sage/categories/supercrystals.py +406 -0
- sage/categories/tensor.py +110 -0
- sage/categories/topological_spaces.py +170 -0
- sage/categories/triangular_kac_moody_algebras.py +439 -0
- sage/categories/tutorial.py +58 -0
- sage/categories/unique_factorization_domains.py +318 -0
- sage/categories/unital_algebras.py +426 -0
- sage/categories/vector_bundles.py +159 -0
- sage/categories/vector_spaces.py +357 -0
- sage/categories/weyl_groups.py +853 -0
- sage/combinat/all__sagemath_categories.py +34 -0
- sage/combinat/backtrack.py +180 -0
- sage/combinat/combinat.py +2269 -0
- sage/combinat/combinat_cython.cpython-314-darwin.so +0 -0
- sage/combinat/combinat_cython.pxd +6 -0
- sage/combinat/combinat_cython.pyx +390 -0
- sage/combinat/combination.py +796 -0
- sage/combinat/combinatorial_map.py +416 -0
- sage/combinat/composition.py +2192 -0
- sage/combinat/dlx.py +510 -0
- sage/combinat/integer_lists/__init__.py +7 -0
- sage/combinat/integer_lists/base.cpython-314-darwin.so +0 -0
- sage/combinat/integer_lists/base.pxd +16 -0
- sage/combinat/integer_lists/base.pyx +713 -0
- sage/combinat/integer_lists/invlex.cpython-314-darwin.so +0 -0
- sage/combinat/integer_lists/invlex.pxd +4 -0
- sage/combinat/integer_lists/invlex.pyx +1650 -0
- sage/combinat/integer_lists/lists.py +328 -0
- sage/combinat/integer_lists/nn.py +48 -0
- sage/combinat/integer_vector.py +1818 -0
- sage/combinat/integer_vector_weighted.py +413 -0
- sage/combinat/matrices/all__sagemath_categories.py +5 -0
- sage/combinat/matrices/dancing_links.cpython-314-darwin.so +0 -0
- sage/combinat/matrices/dancing_links.pyx +1159 -0
- sage/combinat/matrices/dancing_links_c.h +380 -0
- sage/combinat/matrices/dlxcpp.py +136 -0
- sage/combinat/partition.py +10070 -0
- sage/combinat/partitions.cpython-314-darwin.so +0 -0
- sage/combinat/partitions.pyx +743 -0
- sage/combinat/permutation.py +10168 -0
- sage/combinat/permutation_cython.cpython-314-darwin.so +0 -0
- sage/combinat/permutation_cython.pxd +11 -0
- sage/combinat/permutation_cython.pyx +407 -0
- sage/combinat/q_analogues.py +1090 -0
- sage/combinat/ranker.py +268 -0
- sage/combinat/subset.py +1561 -0
- sage/combinat/subsets_hereditary.py +202 -0
- sage/combinat/subsets_pairwise.py +184 -0
- sage/combinat/tools.py +63 -0
- sage/combinat/tuple.py +348 -0
- sage/data_structures/all.py +2 -0
- sage/data_structures/all__sagemath_categories.py +2 -0
- sage/data_structures/binary_matrix.pxd +138 -0
- sage/data_structures/binary_search.cpython-314-darwin.so +0 -0
- sage/data_structures/binary_search.pxd +3 -0
- sage/data_structures/binary_search.pyx +66 -0
- sage/data_structures/bitset.cpython-314-darwin.so +0 -0
- sage/data_structures/bitset.pxd +40 -0
- sage/data_structures/bitset.pyx +2385 -0
- sage/data_structures/bitset_base.cpython-314-darwin.so +0 -0
- sage/data_structures/bitset_base.pxd +926 -0
- sage/data_structures/bitset_base.pyx +117 -0
- sage/data_structures/bitset_intrinsics.h +487 -0
- sage/data_structures/blas_dict.cpython-314-darwin.so +0 -0
- sage/data_structures/blas_dict.pxd +12 -0
- sage/data_structures/blas_dict.pyx +469 -0
- sage/data_structures/list_of_pairs.cpython-314-darwin.so +0 -0
- sage/data_structures/list_of_pairs.pxd +16 -0
- sage/data_structures/list_of_pairs.pyx +122 -0
- sage/data_structures/mutable_poset.py +3312 -0
- sage/data_structures/pairing_heap.cpython-314-darwin.so +0 -0
- sage/data_structures/pairing_heap.h +346 -0
- sage/data_structures/pairing_heap.pxd +88 -0
- sage/data_structures/pairing_heap.pyx +1464 -0
- sage/data_structures/sparse_bitset.pxd +62 -0
- sage/data_structures/stream.py +5070 -0
- sage/databases/all__sagemath_categories.py +7 -0
- sage/databases/sql_db.py +2236 -0
- sage/ext/all__sagemath_categories.py +3 -0
- sage/ext/fast_callable.cpython-314-darwin.so +0 -0
- sage/ext/fast_callable.pxd +4 -0
- sage/ext/fast_callable.pyx +2746 -0
- sage/ext/fast_eval.cpython-314-darwin.so +0 -0
- sage/ext/fast_eval.pxd +1 -0
- sage/ext/fast_eval.pyx +102 -0
- sage/ext/interpreters/__init__.py +1 -0
- sage/ext/interpreters/all__sagemath_categories.py +2 -0
- sage/ext/interpreters/wrapper_el.cpython-314-darwin.so +0 -0
- sage/ext/interpreters/wrapper_el.pxd +18 -0
- sage/ext/interpreters/wrapper_el.pyx +148 -0
- sage/ext/interpreters/wrapper_py.cpython-314-darwin.so +0 -0
- sage/ext/interpreters/wrapper_py.pxd +17 -0
- sage/ext/interpreters/wrapper_py.pyx +133 -0
- sage/functions/airy.py +937 -0
- sage/functions/all.py +97 -0
- sage/functions/bessel.py +2102 -0
- sage/functions/error.py +784 -0
- sage/functions/exp_integral.py +1529 -0
- sage/functions/gamma.py +1087 -0
- sage/functions/generalized.py +672 -0
- sage/functions/hyperbolic.py +747 -0
- sage/functions/hypergeometric.py +1156 -0
- sage/functions/jacobi.py +1705 -0
- sage/functions/log.py +1402 -0
- sage/functions/min_max.py +338 -0
- sage/functions/orthogonal_polys.py +3106 -0
- sage/functions/other.py +2303 -0
- sage/functions/piecewise.py +1505 -0
- sage/functions/prime_pi.cpython-314-darwin.so +0 -0
- sage/functions/prime_pi.pyx +262 -0
- sage/functions/special.py +1212 -0
- sage/functions/spike_function.py +278 -0
- sage/functions/transcendental.py +690 -0
- sage/functions/trig.py +1062 -0
- sage/functions/wigner.py +726 -0
- sage/geometry/abc.cpython-314-darwin.so +0 -0
- sage/geometry/abc.pyx +82 -0
- sage/geometry/all__sagemath_categories.py +1 -0
- sage/groups/all__sagemath_categories.py +11 -0
- sage/groups/generic.py +1733 -0
- sage/groups/groups_catalog.py +113 -0
- sage/groups/perm_gps/all__sagemath_categories.py +1 -0
- sage/groups/perm_gps/partn_ref/all.py +1 -0
- sage/groups/perm_gps/partn_ref/all__sagemath_categories.py +1 -0
- sage/groups/perm_gps/partn_ref/automorphism_group_canonical_label.cpython-314-darwin.so +0 -0
- sage/groups/perm_gps/partn_ref/automorphism_group_canonical_label.pxd +52 -0
- sage/groups/perm_gps/partn_ref/automorphism_group_canonical_label.pyx +906 -0
- sage/groups/perm_gps/partn_ref/canonical_augmentation.cpython-314-darwin.so +0 -0
- sage/groups/perm_gps/partn_ref/canonical_augmentation.pxd +85 -0
- sage/groups/perm_gps/partn_ref/canonical_augmentation.pyx +534 -0
- sage/groups/perm_gps/partn_ref/data_structures.cpython-314-darwin.so +0 -0
- sage/groups/perm_gps/partn_ref/data_structures.pxd +576 -0
- sage/groups/perm_gps/partn_ref/data_structures.pyx +1792 -0
- sage/groups/perm_gps/partn_ref/double_coset.cpython-314-darwin.so +0 -0
- sage/groups/perm_gps/partn_ref/double_coset.pxd +45 -0
- sage/groups/perm_gps/partn_ref/double_coset.pyx +739 -0
- sage/groups/perm_gps/partn_ref/refinement_lists.cpython-314-darwin.so +0 -0
- sage/groups/perm_gps/partn_ref/refinement_lists.pxd +18 -0
- sage/groups/perm_gps/partn_ref/refinement_lists.pyx +82 -0
- sage/groups/perm_gps/partn_ref/refinement_python.cpython-314-darwin.so +0 -0
- sage/groups/perm_gps/partn_ref/refinement_python.pxd +16 -0
- sage/groups/perm_gps/partn_ref/refinement_python.pyx +564 -0
- sage/groups/perm_gps/partn_ref/refinement_sets.cpython-314-darwin.so +0 -0
- sage/groups/perm_gps/partn_ref/refinement_sets.pxd +60 -0
- sage/groups/perm_gps/partn_ref/refinement_sets.pyx +858 -0
- sage/interfaces/abc.py +140 -0
- sage/interfaces/all.py +58 -0
- sage/interfaces/all__sagemath_categories.py +1 -0
- sage/interfaces/expect.py +1643 -0
- sage/interfaces/interface.py +1682 -0
- sage/interfaces/process.cpython-314-darwin.so +0 -0
- sage/interfaces/process.pxd +5 -0
- sage/interfaces/process.pyx +288 -0
- sage/interfaces/quit.py +167 -0
- sage/interfaces/sage0.py +604 -0
- sage/interfaces/sagespawn.cpython-314-darwin.so +0 -0
- sage/interfaces/sagespawn.pyx +308 -0
- sage/interfaces/tab_completion.py +101 -0
- sage/misc/all__sagemath_categories.py +78 -0
- sage/misc/allocator.cpython-314-darwin.so +0 -0
- sage/misc/allocator.pxd +6 -0
- sage/misc/allocator.pyx +47 -0
- sage/misc/binary_tree.cpython-314-darwin.so +0 -0
- sage/misc/binary_tree.pxd +29 -0
- sage/misc/binary_tree.pyx +537 -0
- sage/misc/callable_dict.cpython-314-darwin.so +0 -0
- sage/misc/callable_dict.pyx +89 -0
- sage/misc/citation.cpython-314-darwin.so +0 -0
- sage/misc/citation.pyx +159 -0
- sage/misc/converting_dict.py +293 -0
- sage/misc/defaults.py +129 -0
- sage/misc/derivative.cpython-314-darwin.so +0 -0
- sage/misc/derivative.pyx +223 -0
- sage/misc/functional.py +2005 -0
- sage/misc/html.py +589 -0
- sage/misc/latex.py +2673 -0
- sage/misc/latex_macros.py +236 -0
- sage/misc/latex_standalone.py +1833 -0
- sage/misc/map_threaded.py +38 -0
- sage/misc/mathml.py +76 -0
- sage/misc/method_decorator.py +88 -0
- sage/misc/mrange.py +755 -0
- sage/misc/multireplace.py +41 -0
- sage/misc/object_multiplexer.py +92 -0
- sage/misc/parser.cpython-314-darwin.so +0 -0
- sage/misc/parser.pyx +1107 -0
- sage/misc/random_testing.py +264 -0
- sage/misc/rest_index_of_methods.py +377 -0
- sage/misc/search.cpython-314-darwin.so +0 -0
- sage/misc/search.pxd +2 -0
- sage/misc/search.pyx +68 -0
- sage/misc/stopgap.cpython-314-darwin.so +0 -0
- sage/misc/stopgap.pyx +95 -0
- sage/misc/table.py +853 -0
- sage/monoids/all__sagemath_categories.py +1 -0
- sage/monoids/indexed_free_monoid.py +1071 -0
- sage/monoids/monoid.py +82 -0
- sage/numerical/all__sagemath_categories.py +1 -0
- sage/numerical/backends/all__sagemath_categories.py +1 -0
- sage/numerical/backends/generic_backend.cpython-314-darwin.so +0 -0
- sage/numerical/backends/generic_backend.pxd +61 -0
- sage/numerical/backends/generic_backend.pyx +1893 -0
- sage/numerical/backends/generic_sdp_backend.cpython-314-darwin.so +0 -0
- sage/numerical/backends/generic_sdp_backend.pxd +38 -0
- sage/numerical/backends/generic_sdp_backend.pyx +755 -0
- sage/parallel/all.py +6 -0
- sage/parallel/decorate.py +575 -0
- sage/parallel/map_reduce.py +1997 -0
- sage/parallel/multiprocessing_sage.py +76 -0
- sage/parallel/ncpus.py +35 -0
- sage/parallel/parallelism.py +364 -0
- sage/parallel/reference.py +47 -0
- sage/parallel/use_fork.py +333 -0
- sage/rings/abc.cpython-314-darwin.so +0 -0
- sage/rings/abc.pxd +31 -0
- sage/rings/abc.pyx +526 -0
- sage/rings/algebraic_closure_finite_field.py +1154 -0
- sage/rings/all__sagemath_categories.py +91 -0
- sage/rings/big_oh.py +227 -0
- sage/rings/continued_fraction.py +2754 -0
- sage/rings/continued_fraction_gosper.py +220 -0
- sage/rings/factorint.cpython-314-darwin.so +0 -0
- sage/rings/factorint.pyx +295 -0
- sage/rings/fast_arith.cpython-314-darwin.so +0 -0
- sage/rings/fast_arith.pxd +21 -0
- sage/rings/fast_arith.pyx +535 -0
- sage/rings/finite_rings/all__sagemath_categories.py +9 -0
- sage/rings/finite_rings/conway_polynomials.py +542 -0
- sage/rings/finite_rings/element_base.cpython-314-darwin.so +0 -0
- sage/rings/finite_rings/element_base.pxd +12 -0
- sage/rings/finite_rings/element_base.pyx +1176 -0
- sage/rings/finite_rings/finite_field_base.cpython-314-darwin.so +0 -0
- sage/rings/finite_rings/finite_field_base.pxd +7 -0
- sage/rings/finite_rings/finite_field_base.pyx +2171 -0
- sage/rings/finite_rings/finite_field_constructor.py +827 -0
- sage/rings/finite_rings/finite_field_prime_modn.py +372 -0
- sage/rings/finite_rings/galois_group.py +154 -0
- sage/rings/finite_rings/hom_finite_field.cpython-314-darwin.so +0 -0
- sage/rings/finite_rings/hom_finite_field.pxd +23 -0
- sage/rings/finite_rings/hom_finite_field.pyx +856 -0
- sage/rings/finite_rings/hom_prime_finite_field.cpython-314-darwin.so +0 -0
- sage/rings/finite_rings/hom_prime_finite_field.pxd +15 -0
- sage/rings/finite_rings/hom_prime_finite_field.pyx +164 -0
- sage/rings/finite_rings/homset.py +357 -0
- sage/rings/finite_rings/integer_mod.cpython-314-darwin.so +0 -0
- sage/rings/finite_rings/integer_mod.pxd +56 -0
- sage/rings/finite_rings/integer_mod.pyx +4586 -0
- sage/rings/finite_rings/integer_mod_limits.h +11 -0
- sage/rings/finite_rings/integer_mod_ring.py +2044 -0
- sage/rings/finite_rings/residue_field.cpython-314-darwin.so +0 -0
- sage/rings/finite_rings/residue_field.pxd +30 -0
- sage/rings/finite_rings/residue_field.pyx +1811 -0
- sage/rings/finite_rings/stdint.pxd +19 -0
- sage/rings/fraction_field.py +1452 -0
- sage/rings/fraction_field_element.cpython-314-darwin.so +0 -0
- sage/rings/fraction_field_element.pyx +1357 -0
- sage/rings/function_field/all.py +7 -0
- sage/rings/function_field/all__sagemath_categories.py +2 -0
- sage/rings/function_field/constructor.py +218 -0
- sage/rings/function_field/element.cpython-314-darwin.so +0 -0
- sage/rings/function_field/element.pxd +11 -0
- sage/rings/function_field/element.pyx +1008 -0
- sage/rings/function_field/element_rational.cpython-314-darwin.so +0 -0
- sage/rings/function_field/element_rational.pyx +513 -0
- sage/rings/function_field/extensions.py +230 -0
- sage/rings/function_field/function_field.py +1468 -0
- sage/rings/function_field/function_field_rational.py +1005 -0
- sage/rings/function_field/ideal.py +1155 -0
- sage/rings/function_field/ideal_rational.py +629 -0
- sage/rings/function_field/jacobian_base.py +826 -0
- sage/rings/function_field/jacobian_hess.py +1053 -0
- sage/rings/function_field/jacobian_khuri_makdisi.py +1027 -0
- sage/rings/function_field/maps.py +1039 -0
- sage/rings/function_field/order.py +281 -0
- sage/rings/function_field/order_basis.py +586 -0
- sage/rings/function_field/order_rational.py +576 -0
- sage/rings/function_field/place.py +426 -0
- sage/rings/function_field/place_rational.py +181 -0
- sage/rings/generic.py +320 -0
- sage/rings/homset.py +332 -0
- sage/rings/ideal.py +1885 -0
- sage/rings/ideal_monoid.py +215 -0
- sage/rings/infinity.py +1890 -0
- sage/rings/integer.cpython-314-darwin.so +0 -0
- sage/rings/integer.pxd +45 -0
- sage/rings/integer.pyx +7871 -0
- sage/rings/integer_ring.cpython-314-darwin.so +0 -0
- sage/rings/integer_ring.pxd +8 -0
- sage/rings/integer_ring.pyx +1693 -0
- sage/rings/laurent_series_ring.py +931 -0
- sage/rings/laurent_series_ring_element.cpython-314-darwin.so +0 -0
- sage/rings/laurent_series_ring_element.pxd +11 -0
- sage/rings/laurent_series_ring_element.pyx +1927 -0
- sage/rings/lazy_series.py +7815 -0
- sage/rings/lazy_series_ring.py +4356 -0
- sage/rings/localization.py +1043 -0
- sage/rings/morphism.cpython-314-darwin.so +0 -0
- sage/rings/morphism.pxd +39 -0
- sage/rings/morphism.pyx +3299 -0
- sage/rings/multi_power_series_ring.py +1145 -0
- sage/rings/multi_power_series_ring_element.py +2184 -0
- sage/rings/noncommutative_ideals.cpython-314-darwin.so +0 -0
- sage/rings/noncommutative_ideals.pyx +423 -0
- sage/rings/number_field/all__sagemath_categories.py +1 -0
- sage/rings/number_field/number_field_base.cpython-314-darwin.so +0 -0
- sage/rings/number_field/number_field_base.pxd +8 -0
- sage/rings/number_field/number_field_base.pyx +507 -0
- sage/rings/number_field/number_field_element_base.cpython-314-darwin.so +0 -0
- sage/rings/number_field/number_field_element_base.pxd +6 -0
- sage/rings/number_field/number_field_element_base.pyx +36 -0
- sage/rings/number_field/number_field_ideal.py +3550 -0
- sage/rings/padics/all__sagemath_categories.py +4 -0
- sage/rings/padics/local_generic.py +1670 -0
- sage/rings/padics/local_generic_element.cpython-314-darwin.so +0 -0
- sage/rings/padics/local_generic_element.pxd +5 -0
- sage/rings/padics/local_generic_element.pyx +1017 -0
- sage/rings/padics/misc.py +256 -0
- sage/rings/padics/padic_generic.py +1911 -0
- sage/rings/padics/pow_computer.cpython-314-darwin.so +0 -0
- sage/rings/padics/pow_computer.pxd +38 -0
- sage/rings/padics/pow_computer.pyx +671 -0
- sage/rings/padics/precision_error.py +24 -0
- sage/rings/polynomial/all__sagemath_categories.py +25 -0
- sage/rings/polynomial/commutative_polynomial.cpython-314-darwin.so +0 -0
- sage/rings/polynomial/commutative_polynomial.pxd +6 -0
- sage/rings/polynomial/commutative_polynomial.pyx +24 -0
- sage/rings/polynomial/cyclotomic.cpython-314-darwin.so +0 -0
- sage/rings/polynomial/cyclotomic.pyx +404 -0
- sage/rings/polynomial/flatten.py +711 -0
- sage/rings/polynomial/ideal.py +102 -0
- sage/rings/polynomial/infinite_polynomial_element.py +1768 -0
- sage/rings/polynomial/infinite_polynomial_ring.py +1653 -0
- sage/rings/polynomial/laurent_polynomial.cpython-314-darwin.so +0 -0
- sage/rings/polynomial/laurent_polynomial.pxd +18 -0
- sage/rings/polynomial/laurent_polynomial.pyx +2190 -0
- sage/rings/polynomial/laurent_polynomial_ideal.py +590 -0
- sage/rings/polynomial/laurent_polynomial_ring.py +832 -0
- sage/rings/polynomial/laurent_polynomial_ring_base.py +708 -0
- sage/rings/polynomial/multi_polynomial.cpython-314-darwin.so +0 -0
- sage/rings/polynomial/multi_polynomial.pxd +12 -0
- sage/rings/polynomial/multi_polynomial.pyx +3082 -0
- sage/rings/polynomial/multi_polynomial_element.py +2570 -0
- sage/rings/polynomial/multi_polynomial_ideal.py +5771 -0
- sage/rings/polynomial/multi_polynomial_ring.py +947 -0
- sage/rings/polynomial/multi_polynomial_ring_base.cpython-314-darwin.so +0 -0
- sage/rings/polynomial/multi_polynomial_ring_base.pxd +15 -0
- sage/rings/polynomial/multi_polynomial_ring_base.pyx +1855 -0
- sage/rings/polynomial/multi_polynomial_sequence.py +2204 -0
- sage/rings/polynomial/polydict.cpython-314-darwin.so +0 -0
- sage/rings/polynomial/polydict.pxd +45 -0
- sage/rings/polynomial/polydict.pyx +2701 -0
- sage/rings/polynomial/polynomial_compiled.cpython-314-darwin.so +0 -0
- sage/rings/polynomial/polynomial_compiled.pxd +59 -0
- sage/rings/polynomial/polynomial_compiled.pyx +509 -0
- sage/rings/polynomial/polynomial_element.cpython-314-darwin.so +0 -0
- sage/rings/polynomial/polynomial_element.pxd +64 -0
- sage/rings/polynomial/polynomial_element.pyx +13255 -0
- sage/rings/polynomial/polynomial_element_generic.py +1637 -0
- sage/rings/polynomial/polynomial_fateman.py +97 -0
- sage/rings/polynomial/polynomial_quotient_ring.py +2465 -0
- sage/rings/polynomial/polynomial_quotient_ring_element.py +779 -0
- sage/rings/polynomial/polynomial_ring.py +3784 -0
- sage/rings/polynomial/polynomial_ring_constructor.py +1051 -0
- sage/rings/polynomial/polynomial_ring_homomorphism.cpython-314-darwin.so +0 -0
- sage/rings/polynomial/polynomial_ring_homomorphism.pxd +5 -0
- sage/rings/polynomial/polynomial_ring_homomorphism.pyx +121 -0
- sage/rings/polynomial/polynomial_singular_interface.py +549 -0
- sage/rings/polynomial/symmetric_ideal.py +989 -0
- sage/rings/polynomial/symmetric_reduction.cpython-314-darwin.so +0 -0
- sage/rings/polynomial/symmetric_reduction.pxd +8 -0
- sage/rings/polynomial/symmetric_reduction.pyx +669 -0
- sage/rings/polynomial/term_order.py +2279 -0
- sage/rings/polynomial/toy_buchberger.py +449 -0
- sage/rings/polynomial/toy_d_basis.py +387 -0
- sage/rings/polynomial/toy_variety.py +362 -0
- sage/rings/power_series_mpoly.cpython-314-darwin.so +0 -0
- sage/rings/power_series_mpoly.pxd +9 -0
- sage/rings/power_series_mpoly.pyx +161 -0
- sage/rings/power_series_poly.cpython-314-darwin.so +0 -0
- sage/rings/power_series_poly.pxd +10 -0
- sage/rings/power_series_poly.pyx +1317 -0
- sage/rings/power_series_ring.py +1441 -0
- sage/rings/power_series_ring_element.cpython-314-darwin.so +0 -0
- sage/rings/power_series_ring_element.pxd +12 -0
- sage/rings/power_series_ring_element.pyx +3028 -0
- sage/rings/puiseux_series_ring.py +487 -0
- sage/rings/puiseux_series_ring_element.cpython-314-darwin.so +0 -0
- sage/rings/puiseux_series_ring_element.pxd +7 -0
- sage/rings/puiseux_series_ring_element.pyx +1055 -0
- sage/rings/qqbar_decorators.py +167 -0
- sage/rings/quotient_ring.py +1598 -0
- sage/rings/quotient_ring_element.py +979 -0
- sage/rings/rational.cpython-314-darwin.so +0 -0
- sage/rings/rational.pxd +20 -0
- sage/rings/rational.pyx +4284 -0
- sage/rings/rational_field.py +1730 -0
- sage/rings/real_double.cpython-314-darwin.so +0 -0
- sage/rings/real_double.pxd +16 -0
- sage/rings/real_double.pyx +2215 -0
- sage/rings/real_lazy.cpython-314-darwin.so +0 -0
- sage/rings/real_lazy.pxd +30 -0
- sage/rings/real_lazy.pyx +1773 -0
- sage/rings/ring.cpython-314-darwin.so +0 -0
- sage/rings/ring.pxd +30 -0
- sage/rings/ring.pyx +850 -0
- sage/rings/semirings/all.py +3 -0
- sage/rings/semirings/non_negative_integer_semiring.py +107 -0
- sage/rings/semirings/tropical_mpolynomial.py +972 -0
- sage/rings/semirings/tropical_polynomial.py +997 -0
- sage/rings/semirings/tropical_semiring.cpython-314-darwin.so +0 -0
- sage/rings/semirings/tropical_semiring.pyx +676 -0
- sage/rings/semirings/tropical_variety.py +1701 -0
- sage/rings/sum_of_squares.cpython-314-darwin.so +0 -0
- sage/rings/sum_of_squares.pxd +3 -0
- sage/rings/sum_of_squares.pyx +336 -0
- sage/rings/tests.py +504 -0
- sage/schemes/affine/affine_homset.py +508 -0
- sage/schemes/affine/affine_morphism.py +1574 -0
- sage/schemes/affine/affine_point.py +460 -0
- sage/schemes/affine/affine_rational_point.py +308 -0
- sage/schemes/affine/affine_space.py +1264 -0
- sage/schemes/affine/affine_subscheme.py +592 -0
- sage/schemes/affine/all.py +25 -0
- sage/schemes/all__sagemath_categories.py +5 -0
- sage/schemes/generic/algebraic_scheme.py +2092 -0
- sage/schemes/generic/all.py +5 -0
- sage/schemes/generic/ambient_space.py +400 -0
- sage/schemes/generic/divisor.py +465 -0
- sage/schemes/generic/divisor_group.py +313 -0
- sage/schemes/generic/glue.py +84 -0
- sage/schemes/generic/homset.py +820 -0
- sage/schemes/generic/hypersurface.py +234 -0
- sage/schemes/generic/morphism.py +2107 -0
- sage/schemes/generic/point.py +237 -0
- sage/schemes/generic/scheme.py +1190 -0
- sage/schemes/generic/spec.py +199 -0
- sage/schemes/product_projective/all.py +6 -0
- sage/schemes/product_projective/homset.py +236 -0
- sage/schemes/product_projective/morphism.py +517 -0
- sage/schemes/product_projective/point.py +568 -0
- sage/schemes/product_projective/rational_point.py +550 -0
- sage/schemes/product_projective/space.py +1301 -0
- sage/schemes/product_projective/subscheme.py +466 -0
- sage/schemes/projective/all.py +24 -0
- sage/schemes/projective/proj_bdd_height.py +453 -0
- sage/schemes/projective/projective_homset.py +718 -0
- sage/schemes/projective/projective_morphism.py +2792 -0
- sage/schemes/projective/projective_point.py +1484 -0
- sage/schemes/projective/projective_rational_point.py +569 -0
- sage/schemes/projective/projective_space.py +2571 -0
- sage/schemes/projective/projective_subscheme.py +1574 -0
- sage/sets/all.py +17 -0
- sage/sets/cartesian_product.py +376 -0
- sage/sets/condition_set.py +525 -0
- sage/sets/disjoint_set.cpython-314-darwin.so +0 -0
- sage/sets/disjoint_set.pxd +36 -0
- sage/sets/disjoint_set.pyx +998 -0
- sage/sets/disjoint_union_enumerated_sets.py +625 -0
- sage/sets/family.cpython-314-darwin.so +0 -0
- sage/sets/family.pxd +12 -0
- sage/sets/family.pyx +1556 -0
- sage/sets/finite_enumerated_set.py +406 -0
- sage/sets/finite_set_map_cy.cpython-314-darwin.so +0 -0
- sage/sets/finite_set_map_cy.pxd +34 -0
- sage/sets/finite_set_map_cy.pyx +708 -0
- sage/sets/finite_set_maps.py +591 -0
- sage/sets/image_set.py +448 -0
- sage/sets/integer_range.py +829 -0
- sage/sets/non_negative_integers.py +241 -0
- sage/sets/positive_integers.py +93 -0
- sage/sets/primes.py +188 -0
- sage/sets/real_set.py +2760 -0
- sage/sets/recursively_enumerated_set.cpython-314-darwin.so +0 -0
- sage/sets/recursively_enumerated_set.pxd +31 -0
- sage/sets/recursively_enumerated_set.pyx +2082 -0
- sage/sets/set.py +2083 -0
- sage/sets/set_from_iterator.py +1021 -0
- sage/sets/totally_ordered_finite_set.py +329 -0
- sage/symbolic/all__sagemath_categories.py +1 -0
- sage/symbolic/function.cpython-314-darwin.so +0 -0
- sage/symbolic/function.pxd +29 -0
- sage/symbolic/function.pyx +1488 -0
- sage/symbolic/symbols.py +56 -0
- sage/tests/all__sagemath_categories.py +1 -0
- sage/tests/cython.cpython-314-darwin.so +0 -0
- sage/tests/cython.pyx +37 -0
- sage/tests/stl_vector.cpython-314-darwin.so +0 -0
- sage/tests/stl_vector.pyx +171 -0
- sage/typeset/all.py +6 -0
- sage/typeset/ascii_art.py +295 -0
- sage/typeset/character_art.py +789 -0
- sage/typeset/character_art_factory.py +572 -0
- sage/typeset/symbols.py +334 -0
- sage/typeset/unicode_art.py +183 -0
- sage/typeset/unicode_characters.py +101 -0
|
@@ -0,0 +1,487 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Puiseux Series Ring
|
|
4
|
+
|
|
5
|
+
The ring of Puiseux series.
|
|
6
|
+
|
|
7
|
+
AUTHORS:
|
|
8
|
+
|
|
9
|
+
- Chris Swierczewski 2016: initial version on https://github.com/abelfunctions/abelfunctions/tree/master/abelfunctions
|
|
10
|
+
- Frédéric Chapoton 2016: integration of code
|
|
11
|
+
- Travis Scrimshaw, Sebastian Oehms 2019-2020: basic improvements and completions
|
|
12
|
+
|
|
13
|
+
REFERENCES:
|
|
14
|
+
|
|
15
|
+
- :wikipedia:`Puiseux_series`
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
# ****************************************************************************
|
|
20
|
+
# Copyright (c) 2016 Chris Swierczewski
|
|
21
|
+
#
|
|
22
|
+
# This program is free software: you can redistribute it and/or modify
|
|
23
|
+
# it under the terms of the GNU General Public License as published by
|
|
24
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
25
|
+
# (at your option) any later version.
|
|
26
|
+
# https://www.gnu.org/licenses/
|
|
27
|
+
# ****************************************************************************
|
|
28
|
+
|
|
29
|
+
from sage.categories.fields import Fields
|
|
30
|
+
from sage.misc.cachefunc import cached_method
|
|
31
|
+
from sage.misc.lazy_import import lazy_import
|
|
32
|
+
from sage.rings.infinity import infinity
|
|
33
|
+
from sage.rings.laurent_series_ring import LaurentSeriesRing
|
|
34
|
+
from sage.rings.laurent_series_ring_element import LaurentSeries
|
|
35
|
+
from sage.rings.power_series_ring_element import PowerSeries
|
|
36
|
+
from sage.rings.puiseux_series_ring_element import PuiseuxSeries
|
|
37
|
+
from sage.structure.element import parent
|
|
38
|
+
from sage.structure.parent import Parent
|
|
39
|
+
from sage.structure.unique_representation import UniqueRepresentation
|
|
40
|
+
|
|
41
|
+
lazy_import('sage.rings.lazy_series_ring', 'LazyPowerSeriesRing')
|
|
42
|
+
lazy_import('sage.rings.power_series_ring', 'PowerSeriesRing_generic')
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class PuiseuxSeriesRing(UniqueRepresentation, Parent):
|
|
46
|
+
"""
|
|
47
|
+
Rings of Puiseux series.
|
|
48
|
+
|
|
49
|
+
EXAMPLES::
|
|
50
|
+
|
|
51
|
+
sage: P = PuiseuxSeriesRing(QQ, 'y')
|
|
52
|
+
sage: y = P.gen()
|
|
53
|
+
sage: f = y**(4/3) + y**(-5/6); f
|
|
54
|
+
y^(-5/6) + y^(4/3)
|
|
55
|
+
sage: f.add_bigoh(2)
|
|
56
|
+
y^(-5/6) + y^(4/3) + O(y^2)
|
|
57
|
+
sage: f.add_bigoh(1)
|
|
58
|
+
y^(-5/6) + O(y)
|
|
59
|
+
"""
|
|
60
|
+
@staticmethod
|
|
61
|
+
def __classcall__(cls, *args, **kwds):
|
|
62
|
+
r"""
|
|
63
|
+
TESTS::
|
|
64
|
+
|
|
65
|
+
sage: L = PuiseuxSeriesRing(QQ, 'q')
|
|
66
|
+
sage: L is PuiseuxSeriesRing(QQ, name='q')
|
|
67
|
+
True
|
|
68
|
+
sage: Lp.<q> = PuiseuxSeriesRing(QQ)
|
|
69
|
+
sage: L is Lp
|
|
70
|
+
True
|
|
71
|
+
sage: loads(dumps(L)) is L
|
|
72
|
+
True
|
|
73
|
+
|
|
74
|
+
sage: L.variable_names()
|
|
75
|
+
('q',)
|
|
76
|
+
sage: L.variable_name()
|
|
77
|
+
'q'
|
|
78
|
+
"""
|
|
79
|
+
if not kwds and len(args) == 1 and isinstance(args[0], LaurentSeriesRing):
|
|
80
|
+
laurent_series = args[0]
|
|
81
|
+
else:
|
|
82
|
+
laurent_series = LaurentSeriesRing(*args, **kwds)
|
|
83
|
+
|
|
84
|
+
return super().__classcall__(cls, laurent_series)
|
|
85
|
+
|
|
86
|
+
def __init__(self, laurent_series):
|
|
87
|
+
"""
|
|
88
|
+
Generic class for Puiseux series rings.
|
|
89
|
+
|
|
90
|
+
EXAMPLES::
|
|
91
|
+
|
|
92
|
+
sage: P = PuiseuxSeriesRing(QQ, 'y')
|
|
93
|
+
sage: TestSuite(P).run()
|
|
94
|
+
|
|
95
|
+
sage: P = PuiseuxSeriesRing(ZZ, 'x')
|
|
96
|
+
sage: TestSuite(P).run()
|
|
97
|
+
|
|
98
|
+
sage: P = PuiseuxSeriesRing(ZZ['a,b'], 'x')
|
|
99
|
+
sage: TestSuite(P).run()
|
|
100
|
+
"""
|
|
101
|
+
base_ring = laurent_series.base_ring()
|
|
102
|
+
|
|
103
|
+
# If self is R(( x^(1/e) )) then the corresponding Laurent series
|
|
104
|
+
# ring will be R(( x ))
|
|
105
|
+
self._laurent_series_ring = laurent_series
|
|
106
|
+
|
|
107
|
+
cat = laurent_series.category()
|
|
108
|
+
if base_ring in Fields():
|
|
109
|
+
cat &= Fields()
|
|
110
|
+
Parent.__init__(self, base_ring,
|
|
111
|
+
names=laurent_series.variable_names(),
|
|
112
|
+
category=cat)
|
|
113
|
+
|
|
114
|
+
def _repr_(self) -> str:
|
|
115
|
+
"""
|
|
116
|
+
String representation.
|
|
117
|
+
|
|
118
|
+
EXAMPLES::
|
|
119
|
+
|
|
120
|
+
sage: PuiseuxSeriesRing(AA, 'y') # needs sage.rings.number_field
|
|
121
|
+
Puiseux Series Ring in y over Algebraic Real Field
|
|
122
|
+
"""
|
|
123
|
+
s = f"Puiseux Series Ring in {self.variable_name()} over {self.base_ring()}"
|
|
124
|
+
if self.is_sparse():
|
|
125
|
+
s = 'Sparse ' + s
|
|
126
|
+
return s
|
|
127
|
+
|
|
128
|
+
def base_extend(self, R):
|
|
129
|
+
"""
|
|
130
|
+
Extend the coefficients.
|
|
131
|
+
|
|
132
|
+
INPUT:
|
|
133
|
+
|
|
134
|
+
- ``R`` -- a ring
|
|
135
|
+
|
|
136
|
+
EXAMPLES::
|
|
137
|
+
|
|
138
|
+
sage: A = PuiseuxSeriesRing(ZZ, 'y')
|
|
139
|
+
sage: A.base_extend(QQ)
|
|
140
|
+
Puiseux Series Ring in y over Rational Field
|
|
141
|
+
"""
|
|
142
|
+
return PuiseuxSeriesRing(self._laurent_series_ring.base_extend(R))
|
|
143
|
+
|
|
144
|
+
def change_ring(self, R):
|
|
145
|
+
"""
|
|
146
|
+
Return a Puiseux series ring over another ring.
|
|
147
|
+
|
|
148
|
+
INPUT:
|
|
149
|
+
|
|
150
|
+
- ``R`` -- a ring
|
|
151
|
+
|
|
152
|
+
EXAMPLES::
|
|
153
|
+
|
|
154
|
+
sage: A = PuiseuxSeriesRing(ZZ, 'y')
|
|
155
|
+
sage: A.change_ring(QQ)
|
|
156
|
+
Puiseux Series Ring in y over Rational Field
|
|
157
|
+
"""
|
|
158
|
+
return PuiseuxSeriesRing(self._laurent_series_ring.change_ring(R))
|
|
159
|
+
|
|
160
|
+
def is_sparse(self) -> bool:
|
|
161
|
+
"""
|
|
162
|
+
Return whether ``self`` is sparse.
|
|
163
|
+
|
|
164
|
+
EXAMPLES::
|
|
165
|
+
|
|
166
|
+
sage: A = PuiseuxSeriesRing(ZZ, 'y')
|
|
167
|
+
sage: A.is_sparse()
|
|
168
|
+
False
|
|
169
|
+
"""
|
|
170
|
+
return self.laurent_series_ring().is_sparse()
|
|
171
|
+
|
|
172
|
+
def is_dense(self) -> bool:
|
|
173
|
+
"""
|
|
174
|
+
Return whether ``self`` is dense.
|
|
175
|
+
|
|
176
|
+
EXAMPLES::
|
|
177
|
+
|
|
178
|
+
sage: A = PuiseuxSeriesRing(ZZ, 'y')
|
|
179
|
+
sage: A.is_dense()
|
|
180
|
+
True
|
|
181
|
+
"""
|
|
182
|
+
return self.laurent_series_ring().is_dense()
|
|
183
|
+
|
|
184
|
+
def is_field(self, proof=True) -> bool:
|
|
185
|
+
r"""
|
|
186
|
+
Return whether ``self`` is a field.
|
|
187
|
+
|
|
188
|
+
A Puiseux series ring is a field if and only
|
|
189
|
+
its base ring is a field.
|
|
190
|
+
|
|
191
|
+
EXAMPLES::
|
|
192
|
+
|
|
193
|
+
sage: A = PuiseuxSeriesRing(ZZ, 'y')
|
|
194
|
+
sage: A.is_field()
|
|
195
|
+
False
|
|
196
|
+
sage: A in Fields()
|
|
197
|
+
False
|
|
198
|
+
sage: B = A.change_ring(QQ); B.is_field()
|
|
199
|
+
True
|
|
200
|
+
sage: B in Fields()
|
|
201
|
+
True
|
|
202
|
+
"""
|
|
203
|
+
return self.base_ring().is_field(proof=proof)
|
|
204
|
+
|
|
205
|
+
def fraction_field(self):
|
|
206
|
+
r"""
|
|
207
|
+
Return the fraction field of this ring of Laurent series.
|
|
208
|
+
|
|
209
|
+
If the base ring is a field, then Puiseux series are already a field.
|
|
210
|
+
If the base ring is a domain, then the Puiseux series over its fraction
|
|
211
|
+
field is returned. Otherwise, raise a :exc:`ValueError`.
|
|
212
|
+
|
|
213
|
+
EXAMPLES::
|
|
214
|
+
|
|
215
|
+
sage: R = PuiseuxSeriesRing(ZZ, 't', 30).fraction_field()
|
|
216
|
+
sage: R
|
|
217
|
+
Puiseux Series Ring in t over Rational Field
|
|
218
|
+
sage: R.default_prec()
|
|
219
|
+
30
|
|
220
|
+
|
|
221
|
+
sage: PuiseuxSeriesRing(Zmod(4), 't').fraction_field()
|
|
222
|
+
Traceback (most recent call last):
|
|
223
|
+
...
|
|
224
|
+
ValueError: must be an integral domain
|
|
225
|
+
"""
|
|
226
|
+
from sage.categories.integral_domains import IntegralDomains
|
|
227
|
+
from sage.categories.fields import Fields
|
|
228
|
+
if self in Fields():
|
|
229
|
+
return self
|
|
230
|
+
if self in IntegralDomains():
|
|
231
|
+
return PuiseuxSeriesRing(self._laurent_series_ring.fraction_field())
|
|
232
|
+
raise ValueError('must be an integral domain')
|
|
233
|
+
|
|
234
|
+
def residue_field(self):
|
|
235
|
+
r"""
|
|
236
|
+
Return the residue field of this Puiseux series field
|
|
237
|
+
if it is a complete discrete valuation field (i.e. if
|
|
238
|
+
the base ring is a field, in which case it is also the
|
|
239
|
+
residue field).
|
|
240
|
+
|
|
241
|
+
EXAMPLES::
|
|
242
|
+
|
|
243
|
+
sage: R.<x> = PuiseuxSeriesRing(GF(17))
|
|
244
|
+
sage: R.residue_field()
|
|
245
|
+
Finite Field of size 17
|
|
246
|
+
|
|
247
|
+
sage: R.<x> = PuiseuxSeriesRing(ZZ)
|
|
248
|
+
sage: R.residue_field()
|
|
249
|
+
Traceback (most recent call last):
|
|
250
|
+
...
|
|
251
|
+
TypeError: the base ring is not a field
|
|
252
|
+
"""
|
|
253
|
+
if self.base_ring() not in Fields():
|
|
254
|
+
raise TypeError("the base ring is not a field")
|
|
255
|
+
return self.base_ring()
|
|
256
|
+
|
|
257
|
+
def uniformizer(self):
|
|
258
|
+
r"""
|
|
259
|
+
Return a uniformizer of this Puiseux series field if it is
|
|
260
|
+
a discrete valuation field (i.e. if the base ring is actually
|
|
261
|
+
a field). Otherwise, an error is raised.
|
|
262
|
+
|
|
263
|
+
EXAMPLES::
|
|
264
|
+
|
|
265
|
+
sage: R.<t> = PuiseuxSeriesRing(QQ)
|
|
266
|
+
sage: R.uniformizer()
|
|
267
|
+
t
|
|
268
|
+
|
|
269
|
+
sage: R.<t> = PuiseuxSeriesRing(ZZ)
|
|
270
|
+
sage: R.uniformizer()
|
|
271
|
+
Traceback (most recent call last):
|
|
272
|
+
...
|
|
273
|
+
TypeError: the base ring is not a field
|
|
274
|
+
"""
|
|
275
|
+
if self.base_ring() not in Fields():
|
|
276
|
+
raise TypeError("the base ring is not a field")
|
|
277
|
+
return self.gen()
|
|
278
|
+
|
|
279
|
+
Element = PuiseuxSeries
|
|
280
|
+
|
|
281
|
+
def _magma_init_(self, magma):
|
|
282
|
+
"""
|
|
283
|
+
Used in converting this ring to the corresponding ring in MAGMA.
|
|
284
|
+
|
|
285
|
+
EXAMPLES::
|
|
286
|
+
|
|
287
|
+
sage: # optional - magma
|
|
288
|
+
sage: R = PuiseuxSeriesRing(QQ, 'y')
|
|
289
|
+
sage: R._magma_init_(magma)
|
|
290
|
+
'SageCreateWithNames(PuiseuxSeriesRing(_sage_ref...),["y"])'
|
|
291
|
+
sage: S = magma(R)
|
|
292
|
+
sage: S
|
|
293
|
+
Puiseux series field in y over Rational Field
|
|
294
|
+
sage: S.1
|
|
295
|
+
y
|
|
296
|
+
sage: S.sage() == R
|
|
297
|
+
True
|
|
298
|
+
|
|
299
|
+
sage: # optional - magma
|
|
300
|
+
sage: magma(PuiseuxSeriesRing(GF(7), 'x')) # needs sage.rings.finite_rings
|
|
301
|
+
Puiseux series field in x over GF(7)
|
|
302
|
+
"""
|
|
303
|
+
B = magma(self.base_ring())
|
|
304
|
+
Bref = B._ref()
|
|
305
|
+
s = 'PuiseuxSeriesRing(%s)' % (Bref)
|
|
306
|
+
return magma._with_names(s, self.variable_names())
|
|
307
|
+
|
|
308
|
+
def _element_constructor_(self, x, e=1, prec=infinity):
|
|
309
|
+
r"""
|
|
310
|
+
Construct a Puiseux series from ``x``.
|
|
311
|
+
|
|
312
|
+
INPUT:
|
|
313
|
+
|
|
314
|
+
- ``x`` -- an object that can be converted into a Puiseux series
|
|
315
|
+
- ``e`` -- (default: ``1``) the ramification index of the series
|
|
316
|
+
- ``prec`` -- (default: ``infinity``) the precision of the series
|
|
317
|
+
as a rational number
|
|
318
|
+
|
|
319
|
+
EXAMPLES::
|
|
320
|
+
|
|
321
|
+
sage: P = PuiseuxSeriesRing(QQ, 'y')
|
|
322
|
+
sage: y = P.gen()
|
|
323
|
+
sage: P([1,3,5,7])
|
|
324
|
+
1 + 3*y + 5*y^2 + 7*y^3
|
|
325
|
+
sage: P(33/14)
|
|
326
|
+
33/14
|
|
327
|
+
|
|
328
|
+
sage: Q = PowerSeriesRing(QQ, 'y')
|
|
329
|
+
sage: z = Q([1,2,4,5]).O(6); z
|
|
330
|
+
1 + 2*y + 4*y^2 + 5*y^3 + O(y^6)
|
|
331
|
+
sage: P(z) + y**(1/2)
|
|
332
|
+
1 + y^(1/2) + 2*y + 4*y^2 + 5*y^3 + O(y^6)
|
|
333
|
+
|
|
334
|
+
sage: Q = LaurentSeriesRing(QQ, 'y')
|
|
335
|
+
sage: z = Q([3,2,1,2]).add_bigoh(5); z
|
|
336
|
+
3 + 2*y + y^2 + 2*y^3 + O(y^5)
|
|
337
|
+
sage: P(z) + y**(1/2)
|
|
338
|
+
3 + y^(1/2) + 2*y + y^2 + 2*y^3 + O(y^5)
|
|
339
|
+
|
|
340
|
+
sage: from sage.modular.etaproducts import qexp_eta # needs sage.modular
|
|
341
|
+
sage: y^(1/24)*qexp_eta(P, prec=30) # needs sage.modular
|
|
342
|
+
y^(1/24) - y^(25/24) - y^(49/24) + y^(121/24) + y^(169/24) - y^(289/24) - y^(361/24) + y^(529/24) + y^(625/24) + O(y^(721/24))
|
|
343
|
+
"""
|
|
344
|
+
P = parent(x)
|
|
345
|
+
|
|
346
|
+
# 1. x is a Puiseux series belonging to this ring.
|
|
347
|
+
# This is short-circuited by the coercion framework.
|
|
348
|
+
# if isinstance(x, self.element_class) and P is self:
|
|
349
|
+
# return x
|
|
350
|
+
# 2. x is a Puiseux series but not an element of this ring. the laurent
|
|
351
|
+
# part should be coercible to the laurent series ring of self
|
|
352
|
+
if isinstance(x, self.element_class):
|
|
353
|
+
l = self._laurent_series_ring(x.laurent_part())
|
|
354
|
+
e = x.ramification_index()
|
|
355
|
+
# 3. x is a member of the base ring then convert x to a laurent series
|
|
356
|
+
# and set the ramification index of the Puiseux series to 1.
|
|
357
|
+
elif P is self.base_ring():
|
|
358
|
+
l = self._laurent_series_ring(x)
|
|
359
|
+
e = 1
|
|
360
|
+
# 4. x is a Laurent or power series with the same base ring
|
|
361
|
+
elif (isinstance(x, (LaurentSeries, PowerSeries))
|
|
362
|
+
and P is self.base_ring()):
|
|
363
|
+
l = self._laurent_series_ring(x)
|
|
364
|
+
# 5. everything else: try to coerce to laurent series ring
|
|
365
|
+
else:
|
|
366
|
+
l = self._laurent_series_ring(x)
|
|
367
|
+
|
|
368
|
+
# finally, construct an instance of the element class and adding
|
|
369
|
+
# the precision afterwards (see also :issue:`28993`).
|
|
370
|
+
return self.element_class(self, l, e=e).add_bigoh(prec)
|
|
371
|
+
|
|
372
|
+
def _coerce_map_from_(self, P):
|
|
373
|
+
r"""
|
|
374
|
+
Return a coercion map from `P` to ``self``, or ``True``, or ``None``.
|
|
375
|
+
|
|
376
|
+
The following rings admit a coercion map to the Puiseux series ring
|
|
377
|
+
`A((x-a)^(1/e))`:
|
|
378
|
+
|
|
379
|
+
- any ring that admits a coercion map to `A`
|
|
380
|
+
|
|
381
|
+
- any Laurent series ring, power series ring, or polynomial ring in the
|
|
382
|
+
variable `(x-a)` over a ring admitting a coercion map to `A`
|
|
383
|
+
|
|
384
|
+
- any Puiseux series ring with the same center `a` and ramification
|
|
385
|
+
index equal to a multiple of ``self``'s ramification index. For
|
|
386
|
+
example, Puiseux series in (x-a)^(1/2) can be interpreted as Puiseux
|
|
387
|
+
series in (x-a)^(1/4).
|
|
388
|
+
|
|
389
|
+
EXAMPLES::
|
|
390
|
+
|
|
391
|
+
sage: R.<x> = PuiseuxSeriesRing(ZZ)
|
|
392
|
+
sage: 5 in R, 1/5 in R # indirect doctests
|
|
393
|
+
(True, False)
|
|
394
|
+
|
|
395
|
+
sage: p = x^(1/2) + x**3-x**(-1/4)
|
|
396
|
+
sage: p.laurent_part() in R # indirect doctests
|
|
397
|
+
True
|
|
398
|
+
|
|
399
|
+
sage: Q.<x> = PuiseuxSeriesRing(QQ) # indirect doctests
|
|
400
|
+
sage: p in Q
|
|
401
|
+
True
|
|
402
|
+
"""
|
|
403
|
+
# any ring that has a coercion map to A
|
|
404
|
+
A = self.base_ring()
|
|
405
|
+
if A is P:
|
|
406
|
+
return True
|
|
407
|
+
f = A.coerce_map_from(P)
|
|
408
|
+
if f is not None:
|
|
409
|
+
return self.coerce_map_from(A) * f
|
|
410
|
+
|
|
411
|
+
# Laurent series rings, power series rings, and polynomial rings with
|
|
412
|
+
# the same variable name and the base rings are coercible
|
|
413
|
+
if (isinstance(P, (PuiseuxSeriesRing, LaurentSeriesRing,
|
|
414
|
+
PowerSeriesRing_generic, LazyPowerSeriesRing))
|
|
415
|
+
and P.variable_name() == self.variable_name()
|
|
416
|
+
and A.has_coerce_map_from(P.base_ring())):
|
|
417
|
+
return True
|
|
418
|
+
|
|
419
|
+
# # other Puiseux series rings with the same variable name and
|
|
420
|
+
# # center. Puiseux series rings with difference ramification indices are
|
|
421
|
+
# # coercible to each other.
|
|
422
|
+
# if (is_PuiseuxSeriesRing(P) and
|
|
423
|
+
# P.variable_name() == self.variable_name()):
|
|
424
|
+
# return True
|
|
425
|
+
|
|
426
|
+
@cached_method
|
|
427
|
+
def gen(self, n=0):
|
|
428
|
+
r"""
|
|
429
|
+
Return the generator of ``self``.
|
|
430
|
+
|
|
431
|
+
EXAMPLES::
|
|
432
|
+
|
|
433
|
+
sage: A = PuiseuxSeriesRing(AA, 'z') # needs sage.rings.number_field
|
|
434
|
+
sage: A.gen() # needs sage.rings.number_field
|
|
435
|
+
z
|
|
436
|
+
"""
|
|
437
|
+
if n != 0:
|
|
438
|
+
raise IndexError(f"generator {n} not defined")
|
|
439
|
+
return self.element_class(self, [0, 1], e=1)
|
|
440
|
+
|
|
441
|
+
def gens(self) -> tuple:
|
|
442
|
+
"""
|
|
443
|
+
Return the tuple of generators.
|
|
444
|
+
|
|
445
|
+
EXAMPLES::
|
|
446
|
+
|
|
447
|
+
sage: A = PuiseuxSeriesRing(QQ, 'z')
|
|
448
|
+
sage: A.gens()
|
|
449
|
+
(z,)
|
|
450
|
+
"""
|
|
451
|
+
return (self.gen(),)
|
|
452
|
+
|
|
453
|
+
def ngens(self) -> int:
|
|
454
|
+
r"""
|
|
455
|
+
Return the number of generators of ``self``, namely 1.
|
|
456
|
+
|
|
457
|
+
EXAMPLES::
|
|
458
|
+
|
|
459
|
+
sage: A = PuiseuxSeriesRing(AA, 'z') # needs sage.rings.number_field
|
|
460
|
+
sage: A.ngens() # needs sage.rings.number_field
|
|
461
|
+
1
|
|
462
|
+
"""
|
|
463
|
+
return 1
|
|
464
|
+
|
|
465
|
+
def laurent_series_ring(self):
|
|
466
|
+
r"""
|
|
467
|
+
Return the underlying Laurent series ring.
|
|
468
|
+
|
|
469
|
+
EXAMPLES::
|
|
470
|
+
|
|
471
|
+
sage: A = PuiseuxSeriesRing(AA, 'z') # needs sage.rings.number_field
|
|
472
|
+
sage: A.laurent_series_ring() # needs sage.rings.number_field
|
|
473
|
+
Laurent Series Ring in z over Algebraic Real Field
|
|
474
|
+
"""
|
|
475
|
+
return self._laurent_series_ring
|
|
476
|
+
|
|
477
|
+
def default_prec(self):
|
|
478
|
+
"""
|
|
479
|
+
Return the default precision of ``self``.
|
|
480
|
+
|
|
481
|
+
EXAMPLES::
|
|
482
|
+
|
|
483
|
+
sage: A = PuiseuxSeriesRing(AA, 'z') # needs sage.rings.number_field
|
|
484
|
+
sage: A.default_prec() # needs sage.rings.number_field
|
|
485
|
+
20
|
|
486
|
+
"""
|
|
487
|
+
return self.laurent_series_ring().default_prec()
|
|
Binary file
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
from sage.structure.element cimport AlgebraElement, ModuleElement
|
|
3
|
+
from sage.rings.laurent_series_ring_element cimport LaurentSeries
|
|
4
|
+
|
|
5
|
+
cdef class PuiseuxSeries(AlgebraElement):
|
|
6
|
+
cdef LaurentSeries _l
|
|
7
|
+
cdef size_t _e
|