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,216 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
CW Complexes
|
|
4
|
+
"""
|
|
5
|
+
#*****************************************************************************
|
|
6
|
+
# Copyright (C) 2015 Travis Scrimshaw <tscrim at ucdavis.edu>
|
|
7
|
+
#
|
|
8
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
9
|
+
# http://www.gnu.org/licenses/
|
|
10
|
+
#******************************************************************************
|
|
11
|
+
|
|
12
|
+
from sage.misc.abstract_method import abstract_method
|
|
13
|
+
from sage.misc.cachefunc import cached_method
|
|
14
|
+
from sage.categories.category_singleton import Category_singleton
|
|
15
|
+
from sage.categories.category_with_axiom import CategoryWithAxiom
|
|
16
|
+
from sage.categories.sets_cat import Sets
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class CWComplexes(Category_singleton):
|
|
20
|
+
r"""
|
|
21
|
+
The category of CW complexes.
|
|
22
|
+
|
|
23
|
+
A CW complex is a Closure-finite cell complex in the Weak topology.
|
|
24
|
+
|
|
25
|
+
REFERENCES:
|
|
26
|
+
|
|
27
|
+
- :wikipedia:`CW_complex`
|
|
28
|
+
|
|
29
|
+
.. NOTE::
|
|
30
|
+
|
|
31
|
+
The notion of "finite" is that the number of cells is finite.
|
|
32
|
+
|
|
33
|
+
EXAMPLES::
|
|
34
|
+
|
|
35
|
+
sage: from sage.categories.cw_complexes import CWComplexes
|
|
36
|
+
sage: C = CWComplexes(); C
|
|
37
|
+
Category of CW complexes
|
|
38
|
+
|
|
39
|
+
TESTS::
|
|
40
|
+
|
|
41
|
+
sage: TestSuite(C).run()
|
|
42
|
+
"""
|
|
43
|
+
@cached_method
|
|
44
|
+
def super_categories(self):
|
|
45
|
+
"""
|
|
46
|
+
EXAMPLES::
|
|
47
|
+
|
|
48
|
+
sage: from sage.categories.cw_complexes import CWComplexes
|
|
49
|
+
sage: CWComplexes().super_categories()
|
|
50
|
+
[Category of topological spaces]
|
|
51
|
+
"""
|
|
52
|
+
return [Sets().Topological()]
|
|
53
|
+
|
|
54
|
+
def _repr_object_names(self):
|
|
55
|
+
"""
|
|
56
|
+
EXAMPLES::
|
|
57
|
+
|
|
58
|
+
sage: from sage.categories.cw_complexes import CWComplexes
|
|
59
|
+
sage: CWComplexes() # indirect doctest
|
|
60
|
+
Category of CW complexes
|
|
61
|
+
"""
|
|
62
|
+
return "CW complexes"
|
|
63
|
+
|
|
64
|
+
class SubcategoryMethods:
|
|
65
|
+
@cached_method
|
|
66
|
+
def Connected(self):
|
|
67
|
+
"""
|
|
68
|
+
Return the full subcategory of the connected objects of ``self``.
|
|
69
|
+
|
|
70
|
+
EXAMPLES::
|
|
71
|
+
|
|
72
|
+
sage: from sage.categories.cw_complexes import CWComplexes
|
|
73
|
+
sage: CWComplexes().Connected()
|
|
74
|
+
Category of connected CW complexes
|
|
75
|
+
|
|
76
|
+
TESTS::
|
|
77
|
+
|
|
78
|
+
sage: TestSuite(CWComplexes().Connected()).run()
|
|
79
|
+
sage: CWComplexes().Connected.__module__
|
|
80
|
+
'sage.categories.cw_complexes'
|
|
81
|
+
"""
|
|
82
|
+
return self._with_axiom('Connected')
|
|
83
|
+
|
|
84
|
+
@cached_method
|
|
85
|
+
def FiniteDimensional(self):
|
|
86
|
+
"""
|
|
87
|
+
Return the full subcategory of the finite dimensional
|
|
88
|
+
objects of ``self``.
|
|
89
|
+
|
|
90
|
+
EXAMPLES::
|
|
91
|
+
|
|
92
|
+
sage: from sage.categories.cw_complexes import CWComplexes
|
|
93
|
+
sage: C = CWComplexes().FiniteDimensional(); C
|
|
94
|
+
Category of finite dimensional CW complexes
|
|
95
|
+
|
|
96
|
+
TESTS::
|
|
97
|
+
|
|
98
|
+
sage: from sage.categories.cw_complexes import CWComplexes
|
|
99
|
+
sage: C = CWComplexes().FiniteDimensional()
|
|
100
|
+
sage: TestSuite(C).run()
|
|
101
|
+
sage: CWComplexes().Connected().FiniteDimensional.__module__
|
|
102
|
+
'sage.categories.cw_complexes'
|
|
103
|
+
"""
|
|
104
|
+
return self._with_axiom('FiniteDimensional')
|
|
105
|
+
|
|
106
|
+
class Connected(CategoryWithAxiom):
|
|
107
|
+
"""
|
|
108
|
+
The category of connected CW complexes.
|
|
109
|
+
"""
|
|
110
|
+
|
|
111
|
+
class FiniteDimensional(CategoryWithAxiom):
|
|
112
|
+
"""
|
|
113
|
+
Category of finite dimensional CW complexes.
|
|
114
|
+
"""
|
|
115
|
+
|
|
116
|
+
class Finite(CategoryWithAxiom):
|
|
117
|
+
"""
|
|
118
|
+
Category of finite CW complexes.
|
|
119
|
+
|
|
120
|
+
A finite CW complex is a CW complex with a finite number of cells.
|
|
121
|
+
"""
|
|
122
|
+
def extra_super_categories(self):
|
|
123
|
+
"""
|
|
124
|
+
Return the extra super categories of ``self``.
|
|
125
|
+
|
|
126
|
+
A finite CW complex is a compact finite-dimensional CW complex.
|
|
127
|
+
|
|
128
|
+
EXAMPLES::
|
|
129
|
+
|
|
130
|
+
sage: from sage.categories.cw_complexes import CWComplexes
|
|
131
|
+
sage: C = CWComplexes().Finite()
|
|
132
|
+
sage: C.extra_super_categories()
|
|
133
|
+
[Category of finite dimensional CW complexes,
|
|
134
|
+
Category of compact topological spaces]
|
|
135
|
+
"""
|
|
136
|
+
return [CWComplexes().FiniteDimensional(), Sets().Topological().Compact()]
|
|
137
|
+
|
|
138
|
+
class ParentMethods:
|
|
139
|
+
@cached_method
|
|
140
|
+
def dimension(self):
|
|
141
|
+
"""
|
|
142
|
+
Return the dimension of ``self``.
|
|
143
|
+
|
|
144
|
+
EXAMPLES::
|
|
145
|
+
|
|
146
|
+
sage: from sage.categories.cw_complexes import CWComplexes
|
|
147
|
+
sage: X = CWComplexes().example()
|
|
148
|
+
sage: X.dimension()
|
|
149
|
+
2
|
|
150
|
+
"""
|
|
151
|
+
C = self.cells()
|
|
152
|
+
return max(c.dimension() for d in C.keys() for c in C[d])
|
|
153
|
+
|
|
154
|
+
def Compact_extra_super_categories(self):
|
|
155
|
+
"""
|
|
156
|
+
Return extraneous super categories for ``CWComplexes().Compact()``.
|
|
157
|
+
|
|
158
|
+
A compact CW complex is finite, see Proposition A.1 in [Hat2002]_.
|
|
159
|
+
|
|
160
|
+
.. TODO::
|
|
161
|
+
|
|
162
|
+
Fix the name of finite CW complexes.
|
|
163
|
+
|
|
164
|
+
EXAMPLES::
|
|
165
|
+
|
|
166
|
+
sage: from sage.categories.cw_complexes import CWComplexes
|
|
167
|
+
sage: CWComplexes().Compact() # indirect doctest
|
|
168
|
+
Category of finite finite dimensional CW complexes
|
|
169
|
+
sage: CWComplexes().Compact() is CWComplexes().Finite()
|
|
170
|
+
True
|
|
171
|
+
"""
|
|
172
|
+
return (Sets().Finite(),)
|
|
173
|
+
|
|
174
|
+
class ElementMethods:
|
|
175
|
+
@abstract_method
|
|
176
|
+
def dimension(self):
|
|
177
|
+
"""
|
|
178
|
+
Return the dimension of ``self``.
|
|
179
|
+
|
|
180
|
+
EXAMPLES::
|
|
181
|
+
|
|
182
|
+
sage: from sage.categories.cw_complexes import CWComplexes
|
|
183
|
+
sage: X = CWComplexes().example()
|
|
184
|
+
sage: X.an_element().dimension()
|
|
185
|
+
2
|
|
186
|
+
"""
|
|
187
|
+
|
|
188
|
+
class ParentMethods:
|
|
189
|
+
@abstract_method
|
|
190
|
+
def dimension(self):
|
|
191
|
+
"""
|
|
192
|
+
Return the dimension of ``self``.
|
|
193
|
+
|
|
194
|
+
EXAMPLES::
|
|
195
|
+
|
|
196
|
+
sage: from sage.categories.cw_complexes import CWComplexes
|
|
197
|
+
sage: X = CWComplexes().example()
|
|
198
|
+
sage: X.dimension()
|
|
199
|
+
2
|
|
200
|
+
"""
|
|
201
|
+
|
|
202
|
+
@abstract_method(optional=True)
|
|
203
|
+
def cells(self):
|
|
204
|
+
"""
|
|
205
|
+
Return the cells of ``self``.
|
|
206
|
+
|
|
207
|
+
EXAMPLES::
|
|
208
|
+
|
|
209
|
+
sage: from sage.categories.cw_complexes import CWComplexes
|
|
210
|
+
sage: X = CWComplexes().example()
|
|
211
|
+
sage: C = X.cells()
|
|
212
|
+
sage: sorted((d, C[d]) for d in C.keys())
|
|
213
|
+
[(0, (0-cell v,)),
|
|
214
|
+
(1, (0-cell e1, 0-cell e2)),
|
|
215
|
+
(2, (2-cell f,))]
|
|
216
|
+
"""
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Dedekind Domains
|
|
4
|
+
"""
|
|
5
|
+
# ****************************************************************************
|
|
6
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
7
|
+
# https://www.gnu.org/licenses/
|
|
8
|
+
# *****************************************************************************
|
|
9
|
+
try:
|
|
10
|
+
from typing import Self # type: ignore (Python >= 3.11)
|
|
11
|
+
except ImportError:
|
|
12
|
+
from typing_extensions import Self # type: ignore (Python 3.10)
|
|
13
|
+
|
|
14
|
+
from sage.categories.category import Category
|
|
15
|
+
from sage.categories.integral_domains import IntegralDomains
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class DedekindDomains(Category):
|
|
19
|
+
"""
|
|
20
|
+
The category of Dedekind domains.
|
|
21
|
+
|
|
22
|
+
A Dedekind domain is a Noetherian integral domain of Krull
|
|
23
|
+
dimension one that is integrally closed in its field of fractions.
|
|
24
|
+
|
|
25
|
+
EXAMPLES::
|
|
26
|
+
|
|
27
|
+
sage: C = DedekindDomains(); C
|
|
28
|
+
Category of Dedekind domains
|
|
29
|
+
sage: C.super_categories()
|
|
30
|
+
[Category of integral domains]
|
|
31
|
+
|
|
32
|
+
TESTS::
|
|
33
|
+
|
|
34
|
+
sage: TestSuite(C).run()
|
|
35
|
+
"""
|
|
36
|
+
def super_categories(self):
|
|
37
|
+
"""
|
|
38
|
+
EXAMPLES::
|
|
39
|
+
|
|
40
|
+
sage: DedekindDomains().super_categories()
|
|
41
|
+
[Category of integral domains]
|
|
42
|
+
"""
|
|
43
|
+
return [IntegralDomains()]
|
|
44
|
+
|
|
45
|
+
class ParentMethods:
|
|
46
|
+
def krull_dimension(self):
|
|
47
|
+
"""
|
|
48
|
+
Return 1 since Dedekind domains have Krull dimension 1.
|
|
49
|
+
|
|
50
|
+
EXAMPLES:
|
|
51
|
+
|
|
52
|
+
The following are examples of Dedekind domains::
|
|
53
|
+
|
|
54
|
+
sage: ZZ.krull_dimension()
|
|
55
|
+
1
|
|
56
|
+
sage: x = polygen(ZZ, 'x')
|
|
57
|
+
sage: K = NumberField(x^2 + 1, 's') # needs sage.rings.number_field
|
|
58
|
+
sage: OK = K.ring_of_integers() # needs sage.rings.number_field
|
|
59
|
+
sage: OK.krull_dimension() # needs sage.rings.number_field
|
|
60
|
+
1
|
|
61
|
+
"""
|
|
62
|
+
from sage.rings.integer_ring import ZZ
|
|
63
|
+
return ZZ.one()
|
|
64
|
+
|
|
65
|
+
def is_integrally_closed(self) -> bool:
|
|
66
|
+
"""
|
|
67
|
+
Return ``True`` since Dedekind domains are integrally closed.
|
|
68
|
+
|
|
69
|
+
EXAMPLES:
|
|
70
|
+
|
|
71
|
+
The following are examples of Dedekind domains::
|
|
72
|
+
|
|
73
|
+
sage: ZZ.is_integrally_closed()
|
|
74
|
+
True
|
|
75
|
+
sage: x = polygen(ZZ, 'x')
|
|
76
|
+
sage: K = NumberField(x^2 + 1, 's') # needs sage.rings.number_field
|
|
77
|
+
sage: OK = K.ring_of_integers() # needs sage.rings.number_field
|
|
78
|
+
sage: OK.is_integrally_closed() # needs sage.rings.number_field
|
|
79
|
+
True
|
|
80
|
+
|
|
81
|
+
These, however, are not Dedekind domains::
|
|
82
|
+
|
|
83
|
+
sage: QQ.is_integrally_closed()
|
|
84
|
+
True
|
|
85
|
+
sage: S = ZZ[sqrt(5)]; S.is_integrally_closed() # needs fpylll sage.rings.number_field sage.symbolic
|
|
86
|
+
False
|
|
87
|
+
sage: T.<x,y> = PolynomialRing(QQ, 2); T
|
|
88
|
+
Multivariate Polynomial Ring in x, y over Rational Field
|
|
89
|
+
sage: T.is_integral_domain()
|
|
90
|
+
True
|
|
91
|
+
"""
|
|
92
|
+
return True
|
|
93
|
+
|
|
94
|
+
def integral_closure(self) -> Self:
|
|
95
|
+
r"""
|
|
96
|
+
Return ``self`` since Dedekind domains are integrally closed.
|
|
97
|
+
|
|
98
|
+
EXAMPLES::
|
|
99
|
+
|
|
100
|
+
sage: # needs sage.rings.number_field
|
|
101
|
+
sage: x = polygen(ZZ, 'x')
|
|
102
|
+
sage: K = NumberField(x^2 + 1, 's')
|
|
103
|
+
sage: OK = K.ring_of_integers()
|
|
104
|
+
sage: OK.integral_closure()
|
|
105
|
+
Gaussian Integers generated by s in Number Field in s
|
|
106
|
+
with defining polynomial x^2 + 1
|
|
107
|
+
sage: OK.integral_closure() == OK
|
|
108
|
+
True
|
|
109
|
+
|
|
110
|
+
sage: QQ.integral_closure() == QQ
|
|
111
|
+
True
|
|
112
|
+
"""
|
|
113
|
+
return self
|
|
114
|
+
|
|
115
|
+
def is_noetherian(self) -> bool:
|
|
116
|
+
r"""
|
|
117
|
+
Return ``True`` since Dedekind domains are Noetherian.
|
|
118
|
+
|
|
119
|
+
EXAMPLES:
|
|
120
|
+
|
|
121
|
+
The integers, `\ZZ`, and rings of integers of number
|
|
122
|
+
fields are Dedekind domains::
|
|
123
|
+
|
|
124
|
+
sage: ZZ.is_noetherian()
|
|
125
|
+
True
|
|
126
|
+
sage: x = polygen(ZZ, 'x')
|
|
127
|
+
sage: K = NumberField(x^2 + 1, 's') # needs sage.rings.number_field
|
|
128
|
+
sage: OK = K.ring_of_integers() # needs sage.rings.number_field
|
|
129
|
+
sage: OK.is_noetherian() # needs sage.rings.number_field
|
|
130
|
+
True
|
|
131
|
+
sage: QQ.is_noetherian()
|
|
132
|
+
True
|
|
133
|
+
"""
|
|
134
|
+
return True
|
|
135
|
+
|
|
136
|
+
class ElementMethods:
|
|
137
|
+
pass
|
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Discrete Valuation Rings (DVR) and Fields (DVF)
|
|
4
|
+
"""
|
|
5
|
+
#**************************************************************************
|
|
6
|
+
# Copyright (C) 2013 Xavier Caruso <xavier.caruso@normalesup.org>
|
|
7
|
+
#
|
|
8
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
9
|
+
# http://www.gnu.org/licenses/
|
|
10
|
+
#**************************************************************************
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
from sage.misc.abstract_method import abstract_method
|
|
14
|
+
from sage.categories.category_singleton import Category_singleton
|
|
15
|
+
from sage.categories.euclidean_domains import EuclideanDomains
|
|
16
|
+
from sage.categories.fields import Fields
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class DiscreteValuationRings(Category_singleton):
|
|
20
|
+
"""
|
|
21
|
+
The category of discrete valuation rings.
|
|
22
|
+
|
|
23
|
+
EXAMPLES::
|
|
24
|
+
|
|
25
|
+
sage: GF(7)[['x']] in DiscreteValuationRings()
|
|
26
|
+
True
|
|
27
|
+
sage: TestSuite(DiscreteValuationRings()).run()
|
|
28
|
+
"""
|
|
29
|
+
def super_categories(self):
|
|
30
|
+
"""
|
|
31
|
+
EXAMPLES::
|
|
32
|
+
|
|
33
|
+
sage: DiscreteValuationRings().super_categories()
|
|
34
|
+
[Category of euclidean domains]
|
|
35
|
+
"""
|
|
36
|
+
return [EuclideanDomains()]
|
|
37
|
+
|
|
38
|
+
class ParentMethods:
|
|
39
|
+
@abstract_method
|
|
40
|
+
def uniformizer(self):
|
|
41
|
+
"""
|
|
42
|
+
Return a uniformizer of this ring.
|
|
43
|
+
|
|
44
|
+
EXAMPLES::
|
|
45
|
+
|
|
46
|
+
sage: Zp(5).uniformizer() # needs sage.rings.padics
|
|
47
|
+
5 + O(5^21)
|
|
48
|
+
|
|
49
|
+
sage: K.<u> = QQ[[]]
|
|
50
|
+
sage: K.uniformizer()
|
|
51
|
+
u
|
|
52
|
+
"""
|
|
53
|
+
|
|
54
|
+
@abstract_method
|
|
55
|
+
def residue_field(self):
|
|
56
|
+
"""
|
|
57
|
+
Return the residue field of this ring.
|
|
58
|
+
|
|
59
|
+
EXAMPLES::
|
|
60
|
+
|
|
61
|
+
sage: Zp(5).residue_field() # needs sage.rings.padics
|
|
62
|
+
Finite Field of size 5
|
|
63
|
+
|
|
64
|
+
sage: K.<u> = QQ[[]]
|
|
65
|
+
sage: K.residue_field()
|
|
66
|
+
Rational Field
|
|
67
|
+
"""
|
|
68
|
+
|
|
69
|
+
def _matrix_charpoly(self, M, var):
|
|
70
|
+
r"""
|
|
71
|
+
Return the characteristic polynomial of `M`.
|
|
72
|
+
|
|
73
|
+
EXAMPLES::
|
|
74
|
+
|
|
75
|
+
sage: # needs sage.modules
|
|
76
|
+
sage: R.<t> = PowerSeriesRing(GF(5))
|
|
77
|
+
sage: M = matrix(4, 4, [(t^(i+j)).add_bigoh(10)
|
|
78
|
+
....: for i in range(4) for j in range(4)])
|
|
79
|
+
sage: M
|
|
80
|
+
[ 1 + O(t^10) t + O(t^10) t^2 + O(t^10) t^3 + O(t^10)]
|
|
81
|
+
[ t + O(t^10) t^2 + O(t^10) t^3 + O(t^10) t^4 + O(t^10)]
|
|
82
|
+
[t^2 + O(t^10) t^3 + O(t^10) t^4 + O(t^10) t^5 + O(t^10)]
|
|
83
|
+
[t^3 + O(t^10) t^4 + O(t^10) t^5 + O(t^10) t^6 + O(t^10)]
|
|
84
|
+
sage: M.charpoly() # indirect doctest
|
|
85
|
+
x^4 + (4 + 4*t^2 + 4*t^4 + 4*t^6 + O(t^10))*x^3
|
|
86
|
+
|
|
87
|
+
Note that this function uses a Hessenberg-like algorithm
|
|
88
|
+
that performs divisions. Hence, truncations may show up
|
|
89
|
+
even if the input matrix is exact::
|
|
90
|
+
|
|
91
|
+
sage: # needs sage.modules
|
|
92
|
+
sage: M = matrix(3, 3, [ 1, t, t^2, 1+t, t^2, t^3, t^2, t^3, t^4 ])
|
|
93
|
+
sage: M
|
|
94
|
+
[ 1 t t^2]
|
|
95
|
+
[1 + t t^2 t^3]
|
|
96
|
+
[ t^2 t^3 t^4]
|
|
97
|
+
sage: M.charpoly()
|
|
98
|
+
x^3 + (4 + 4*t^2 + 4*t^4 + O(t^25))*x^2 + (4*t + O(t^24))*x
|
|
99
|
+
|
|
100
|
+
Another example over the `p`-adics::
|
|
101
|
+
|
|
102
|
+
sage: # needs sage.modules sage.rings.padics
|
|
103
|
+
sage: R = Zp(5, print_mode='digits', prec=5)
|
|
104
|
+
sage: M = matrix(R, 3, 3, range(9))
|
|
105
|
+
sage: M
|
|
106
|
+
[ 0 ...00001 ...00002]
|
|
107
|
+
[ ...00003 ...00004 ...000010]
|
|
108
|
+
[ ...00011 ...00012 ...00013]
|
|
109
|
+
sage: M.charpoly()
|
|
110
|
+
...00001*x^3 + ...44423*x^2 + ...44412*x + ...00000
|
|
111
|
+
"""
|
|
112
|
+
return M._charpoly_hessenberg(var)
|
|
113
|
+
|
|
114
|
+
class ElementMethods:
|
|
115
|
+
@abstract_method
|
|
116
|
+
def valuation(self):
|
|
117
|
+
"""
|
|
118
|
+
Return the valuation of this element.
|
|
119
|
+
|
|
120
|
+
EXAMPLES::
|
|
121
|
+
|
|
122
|
+
sage: # needs sage.rings.padics
|
|
123
|
+
sage: x = Zp(5)(50)
|
|
124
|
+
sage: x.valuation()
|
|
125
|
+
2
|
|
126
|
+
"""
|
|
127
|
+
|
|
128
|
+
def euclidean_degree(self):
|
|
129
|
+
"""
|
|
130
|
+
Return the Euclidean degree of this element.
|
|
131
|
+
|
|
132
|
+
TESTS::
|
|
133
|
+
|
|
134
|
+
sage: R.<q> = GF(5)[[]]
|
|
135
|
+
sage: (q^3).euclidean_degree()
|
|
136
|
+
3
|
|
137
|
+
sage: R(0).euclidean_degree()
|
|
138
|
+
Traceback (most recent call last):
|
|
139
|
+
...
|
|
140
|
+
ValueError: Euclidean degree of the zero element not defined
|
|
141
|
+
"""
|
|
142
|
+
if not self:
|
|
143
|
+
raise ValueError("Euclidean degree of the zero element not defined")
|
|
144
|
+
return self.valuation()
|
|
145
|
+
|
|
146
|
+
def quo_rem(self, other):
|
|
147
|
+
"""
|
|
148
|
+
Return the quotient and remainder for Euclidean division
|
|
149
|
+
of ``self`` by ``other``.
|
|
150
|
+
|
|
151
|
+
EXAMPLES::
|
|
152
|
+
|
|
153
|
+
sage: R.<q> = GF(5)[[]]
|
|
154
|
+
sage: (q^2 + q).quo_rem(q)
|
|
155
|
+
(1 + q, 0)
|
|
156
|
+
sage: (q + 1).quo_rem(q^2)
|
|
157
|
+
(0, 1 + q)
|
|
158
|
+
|
|
159
|
+
TESTS::
|
|
160
|
+
|
|
161
|
+
sage: q.quo_rem(0)
|
|
162
|
+
Traceback (most recent call last):
|
|
163
|
+
...
|
|
164
|
+
ZeroDivisionError: Euclidean division by the zero element not defined
|
|
165
|
+
|
|
166
|
+
sage: L = PowerSeriesRing(QQ, 't')
|
|
167
|
+
sage: t = L.gen()
|
|
168
|
+
sage: F = algebras.Free(L, ['A', 'B']) # needs sage.combinat sage.modules
|
|
169
|
+
sage: A, B = F.gens() # needs sage.combinat sage.modules
|
|
170
|
+
sage: f = t*A + t**2*B/2 # needs sage.combinat sage.modules
|
|
171
|
+
"""
|
|
172
|
+
if not other:
|
|
173
|
+
raise ZeroDivisionError("Euclidean division by the zero element not defined")
|
|
174
|
+
P = self.parent()
|
|
175
|
+
other = P(other)
|
|
176
|
+
if self.valuation() >= other.valuation():
|
|
177
|
+
return P(self / other), P.zero()
|
|
178
|
+
else:
|
|
179
|
+
return P.zero(), self
|
|
180
|
+
|
|
181
|
+
def is_unit(self):
|
|
182
|
+
"""
|
|
183
|
+
Return ``True`` if ``self`` is invertible.
|
|
184
|
+
|
|
185
|
+
EXAMPLES::
|
|
186
|
+
|
|
187
|
+
sage: # needs sage.rings.padics
|
|
188
|
+
sage: x = Zp(5)(50)
|
|
189
|
+
sage: x.is_unit()
|
|
190
|
+
False
|
|
191
|
+
|
|
192
|
+
sage: # needs sage.rings.padics
|
|
193
|
+
sage: x = Zp(7)(50)
|
|
194
|
+
sage: x.is_unit()
|
|
195
|
+
True
|
|
196
|
+
"""
|
|
197
|
+
return self.valuation() == 0
|
|
198
|
+
|
|
199
|
+
def gcd(self, other):
|
|
200
|
+
"""
|
|
201
|
+
Return the greatest common divisor of ``self`` and ``other``,
|
|
202
|
+
normalized so that it is a power of the distinguished
|
|
203
|
+
uniformizer.
|
|
204
|
+
"""
|
|
205
|
+
from sage.rings.infinity import Infinity
|
|
206
|
+
val = min(self.valuation(), other.valuation())
|
|
207
|
+
if val is Infinity:
|
|
208
|
+
return self.parent()(0)
|
|
209
|
+
else:
|
|
210
|
+
return self.parent().uniformizer() ** val
|
|
211
|
+
|
|
212
|
+
def lcm(self, other):
|
|
213
|
+
"""
|
|
214
|
+
Return the least common multiple of ``self`` and ``other``,
|
|
215
|
+
normalized so that it is a power of the distinguished
|
|
216
|
+
uniformizer.
|
|
217
|
+
"""
|
|
218
|
+
from sage.rings.infinity import Infinity
|
|
219
|
+
val = max(self.valuation(), other.valuation())
|
|
220
|
+
if val is Infinity:
|
|
221
|
+
return self.parent()(0)
|
|
222
|
+
else:
|
|
223
|
+
return self.parent().uniformizer() ** val
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
class DiscreteValuationFields(Category_singleton):
|
|
227
|
+
"""
|
|
228
|
+
The category of discrete valuation fields.
|
|
229
|
+
|
|
230
|
+
EXAMPLES::
|
|
231
|
+
|
|
232
|
+
sage: Qp(7) in DiscreteValuationFields() # needs sage.rings.padics
|
|
233
|
+
True
|
|
234
|
+
sage: TestSuite(DiscreteValuationFields()).run()
|
|
235
|
+
"""
|
|
236
|
+
|
|
237
|
+
def super_categories(self):
|
|
238
|
+
"""
|
|
239
|
+
EXAMPLES::
|
|
240
|
+
|
|
241
|
+
sage: DiscreteValuationFields().super_categories()
|
|
242
|
+
[Category of fields]
|
|
243
|
+
"""
|
|
244
|
+
return [Fields()]
|
|
245
|
+
|
|
246
|
+
class ParentMethods:
|
|
247
|
+
@abstract_method
|
|
248
|
+
def uniformizer(self):
|
|
249
|
+
"""
|
|
250
|
+
Return a uniformizer of this ring.
|
|
251
|
+
|
|
252
|
+
EXAMPLES::
|
|
253
|
+
|
|
254
|
+
sage: Qp(5).uniformizer() # needs sage.rings.padics
|
|
255
|
+
5 + O(5^21)
|
|
256
|
+
"""
|
|
257
|
+
|
|
258
|
+
@abstract_method
|
|
259
|
+
def residue_field(self):
|
|
260
|
+
"""
|
|
261
|
+
Return the residue field of the ring of integers of
|
|
262
|
+
this discrete valuation field.
|
|
263
|
+
|
|
264
|
+
EXAMPLES::
|
|
265
|
+
|
|
266
|
+
sage: Qp(5).residue_field() # needs sage.rings.padics
|
|
267
|
+
Finite Field of size 5
|
|
268
|
+
|
|
269
|
+
sage: K.<u> = LaurentSeriesRing(QQ)
|
|
270
|
+
sage: K.residue_field()
|
|
271
|
+
Rational Field
|
|
272
|
+
"""
|
|
273
|
+
|
|
274
|
+
def _matrix_hessenbergize(self, H):
|
|
275
|
+
r"""
|
|
276
|
+
Replace `H` with a Hessenberg form of it.
|
|
277
|
+
|
|
278
|
+
EXAMPLES::
|
|
279
|
+
|
|
280
|
+
sage: # needs sage.modules
|
|
281
|
+
sage: R.<t> = PowerSeriesRing(GF(5))
|
|
282
|
+
sage: K = R.fraction_field()
|
|
283
|
+
sage: H = matrix(K, 4, 4, [(t^(i+j)).add_bigoh(10)
|
|
284
|
+
....: for i in range(4) for j in range(4)])
|
|
285
|
+
sage: H
|
|
286
|
+
[ 1 + O(t^10) t + O(t^10) t^2 + O(t^10) t^3 + O(t^10)]
|
|
287
|
+
[ t + O(t^10) t^2 + O(t^10) t^3 + O(t^10) t^4 + O(t^10)]
|
|
288
|
+
[t^2 + O(t^10) t^3 + O(t^10) t^4 + O(t^10) t^5 + O(t^10)]
|
|
289
|
+
[t^3 + O(t^10) t^4 + O(t^10) t^5 + O(t^10) t^6 + O(t^10)]
|
|
290
|
+
sage: H.hessenbergize()
|
|
291
|
+
sage: H
|
|
292
|
+
[ 1 + O(t^10) t + t^3 + t^5 + O(t^10) t^2 + O(t^10) t^3 + O(t^10)]
|
|
293
|
+
[ t + O(t^10) t^2 + t^4 + t^6 + O(t^10) t^3 + O(t^10) t^4 + O(t^10)]
|
|
294
|
+
[ O(t^10) O(t^10) O(t^10) O(t^10)]
|
|
295
|
+
[ O(t^10) O(t^10) O(t^10) O(t^10)]
|
|
296
|
+
|
|
297
|
+
Another example over the `p`-adics::
|
|
298
|
+
|
|
299
|
+
sage: # needs sage.modules sage.rings.padics
|
|
300
|
+
sage: K = Qp(5, print_mode='digits', prec=5)
|
|
301
|
+
sage: H = matrix(K, 3, 3, range(9)); H
|
|
302
|
+
[ 0 ...00001 ...00002]
|
|
303
|
+
[ ...00003 ...00004 ...000010]
|
|
304
|
+
[ ...00011 ...00012 ...00013]
|
|
305
|
+
sage: H.hessenbergize(); H
|
|
306
|
+
[ 0 ...00010 ...00002]
|
|
307
|
+
[ ...00003 ...00024 ...000010]
|
|
308
|
+
[ ...00000 ...44440 ...44443]
|
|
309
|
+
"""
|
|
310
|
+
from sage.matrix.matrix_cdv import hessenbergize_cdvf
|
|
311
|
+
hessenbergize_cdvf(H)
|
|
312
|
+
|
|
313
|
+
class ElementMethods:
|
|
314
|
+
@abstract_method
|
|
315
|
+
def valuation(self):
|
|
316
|
+
"""
|
|
317
|
+
Return the valuation of this element.
|
|
318
|
+
|
|
319
|
+
EXAMPLES::
|
|
320
|
+
|
|
321
|
+
sage: # needs sage.rings.padics
|
|
322
|
+
sage: x = Qp(5)(50)
|
|
323
|
+
sage: x.valuation()
|
|
324
|
+
2
|
|
325
|
+
"""
|