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
sage/categories/rngs.py
ADDED
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Rngs
|
|
4
|
+
"""
|
|
5
|
+
# ****************************************************************************
|
|
6
|
+
# Copyright (C) 2008 Teresa Gomez-Diaz (CNRS) <Teresa.Gomez-Diaz@univ-mlv.fr>
|
|
7
|
+
# 2012 Nicolas M. Thiery <nthiery at users.sf.net>
|
|
8
|
+
#
|
|
9
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
10
|
+
# https://www.gnu.org/licenses/
|
|
11
|
+
# *****************************************************************************
|
|
12
|
+
|
|
13
|
+
from sage.misc.cachefunc import cached_method
|
|
14
|
+
from sage.categories.category_with_axiom import CategoryWithAxiom
|
|
15
|
+
from sage.misc.lazy_import import LazyImport
|
|
16
|
+
from sage.categories.magmas_and_additive_magmas import MagmasAndAdditiveMagmas
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class Rngs(CategoryWithAxiom):
|
|
20
|
+
"""
|
|
21
|
+
The category of rngs.
|
|
22
|
+
|
|
23
|
+
An *rng* `(S, +, *)` is similar to a ring but not necessarily
|
|
24
|
+
unital. In other words, it is a combination of a commutative
|
|
25
|
+
additive group `(S, +)` and a multiplicative semigroup `(S, *)`,
|
|
26
|
+
where `*` distributes over `+`.
|
|
27
|
+
|
|
28
|
+
EXAMPLES::
|
|
29
|
+
|
|
30
|
+
sage: C = Rngs(); C
|
|
31
|
+
Category of rngs
|
|
32
|
+
sage: sorted(C.super_categories(), key=str)
|
|
33
|
+
[Category of associative additive commutative additive associative additive unital distributive magmas and additive magmas,
|
|
34
|
+
Category of commutative additive groups]
|
|
35
|
+
|
|
36
|
+
sage: sorted(C.axioms())
|
|
37
|
+
['AdditiveAssociative', 'AdditiveCommutative', 'AdditiveInverse',
|
|
38
|
+
'AdditiveUnital', 'Associative', 'Distributive']
|
|
39
|
+
|
|
40
|
+
sage: C is (CommutativeAdditiveGroups() & Semigroups()).Distributive()
|
|
41
|
+
True
|
|
42
|
+
sage: C.Unital()
|
|
43
|
+
Category of rings
|
|
44
|
+
|
|
45
|
+
TESTS::
|
|
46
|
+
|
|
47
|
+
sage: TestSuite(C).run()
|
|
48
|
+
"""
|
|
49
|
+
|
|
50
|
+
_base_category_class_and_axiom = (MagmasAndAdditiveMagmas.Distributive.AdditiveAssociative.AdditiveCommutative.AdditiveUnital.Associative, "AdditiveInverse")
|
|
51
|
+
|
|
52
|
+
def __lean_init__(self):
|
|
53
|
+
r"""
|
|
54
|
+
Return the category as Lean mathlib input for a typeclass.
|
|
55
|
+
|
|
56
|
+
EXAMPLES::
|
|
57
|
+
|
|
58
|
+
sage: from sage.categories.rngs import Rngs
|
|
59
|
+
sage: C = Rngs(); C
|
|
60
|
+
Category of rngs
|
|
61
|
+
sage: C.__lean_init__()
|
|
62
|
+
'non_unital_ring'
|
|
63
|
+
"""
|
|
64
|
+
# defined in algebra.ring.basic
|
|
65
|
+
return 'non_unital_ring'
|
|
66
|
+
|
|
67
|
+
Unital = LazyImport('sage.categories.rings', 'Rings', at_startup=True)
|
|
68
|
+
|
|
69
|
+
class ParentMethods:
|
|
70
|
+
|
|
71
|
+
@cached_method
|
|
72
|
+
def ideal_monoid(self):
|
|
73
|
+
"""
|
|
74
|
+
The monoid of the ideals of this ring.
|
|
75
|
+
|
|
76
|
+
.. NOTE::
|
|
77
|
+
|
|
78
|
+
The code is copied from the base class of rings.
|
|
79
|
+
This is since there are rings that do not inherit
|
|
80
|
+
from that class, such as matrix algebras. See
|
|
81
|
+
:issue:`7797`.
|
|
82
|
+
|
|
83
|
+
EXAMPLES::
|
|
84
|
+
|
|
85
|
+
sage: # needs sage.modules
|
|
86
|
+
sage: MS = MatrixSpace(QQ, 2, 2)
|
|
87
|
+
sage: isinstance(MS, Ring)
|
|
88
|
+
False
|
|
89
|
+
sage: MS in Rings()
|
|
90
|
+
True
|
|
91
|
+
sage: MS.ideal_monoid()
|
|
92
|
+
Monoid of ideals of Full MatrixSpace of 2 by 2 dense matrices
|
|
93
|
+
over Rational Field
|
|
94
|
+
|
|
95
|
+
Note that the monoid is cached::
|
|
96
|
+
|
|
97
|
+
sage: MS.ideal_monoid() is MS.ideal_monoid() # needs sage.modules
|
|
98
|
+
True
|
|
99
|
+
"""
|
|
100
|
+
try:
|
|
101
|
+
from sage.rings.ideal_monoid import IdealMonoid
|
|
102
|
+
return IdealMonoid(self)
|
|
103
|
+
except TypeError:
|
|
104
|
+
from sage.rings.noncommutative_ideals import IdealMonoid_nc
|
|
105
|
+
return IdealMonoid_nc(self)
|
|
106
|
+
|
|
107
|
+
def _ideal_class_(self, n=0):
|
|
108
|
+
r"""
|
|
109
|
+
Return a callable object that can be used to create ideals in this
|
|
110
|
+
ring.
|
|
111
|
+
|
|
112
|
+
The argument `n`, standing for the number of generators
|
|
113
|
+
of the ideal, is ignored.
|
|
114
|
+
|
|
115
|
+
EXAMPLES::
|
|
116
|
+
|
|
117
|
+
sage: MS = MatrixSpace(QQ, 2, 2) # needs sage.modules
|
|
118
|
+
sage: MS._ideal_class_() # needs sage.modules
|
|
119
|
+
<class 'sage.rings.noncommutative_ideals.Ideal_nc'>
|
|
120
|
+
|
|
121
|
+
Since :issue:`7797`, non-commutative rings have ideals as well::
|
|
122
|
+
|
|
123
|
+
sage: A = SteenrodAlgebra(2) # needs sage.combinat sage.modules
|
|
124
|
+
sage: A._ideal_class_() # needs sage.combinat sage.modules
|
|
125
|
+
<class 'sage.rings.noncommutative_ideals.Ideal_nc'>
|
|
126
|
+
"""
|
|
127
|
+
from sage.rings.noncommutative_ideals import Ideal_nc
|
|
128
|
+
return Ideal_nc
|
|
129
|
+
|
|
130
|
+
def principal_ideal(self, gen, coerce=True):
|
|
131
|
+
"""
|
|
132
|
+
Return the principal ideal generated by ``gen``.
|
|
133
|
+
|
|
134
|
+
EXAMPLES::
|
|
135
|
+
|
|
136
|
+
sage: R.<x,y> = ZZ[]
|
|
137
|
+
sage: R.principal_ideal(x+2*y)
|
|
138
|
+
Ideal (x + 2*y) of Multivariate Polynomial Ring in x, y over Integer Ring
|
|
139
|
+
"""
|
|
140
|
+
C = self._ideal_class_(1)
|
|
141
|
+
if coerce:
|
|
142
|
+
gen = self(gen)
|
|
143
|
+
return C(self, [gen])
|
|
144
|
+
|
|
145
|
+
@cached_method
|
|
146
|
+
def zero_ideal(self):
|
|
147
|
+
"""
|
|
148
|
+
Return the zero ideal of this ring (cached).
|
|
149
|
+
|
|
150
|
+
EXAMPLES::
|
|
151
|
+
|
|
152
|
+
sage: ZZ.zero_ideal()
|
|
153
|
+
Principal ideal (0) of Integer Ring
|
|
154
|
+
sage: QQ.zero_ideal()
|
|
155
|
+
Principal ideal (0) of Rational Field
|
|
156
|
+
sage: QQ['x'].zero_ideal()
|
|
157
|
+
Principal ideal (0) of Univariate Polynomial Ring in x over Rational Field
|
|
158
|
+
|
|
159
|
+
The result is cached::
|
|
160
|
+
|
|
161
|
+
sage: ZZ.zero_ideal() is ZZ.zero_ideal()
|
|
162
|
+
True
|
|
163
|
+
|
|
164
|
+
TESTS:
|
|
165
|
+
|
|
166
|
+
Make sure that :issue:`13644` is fixed::
|
|
167
|
+
|
|
168
|
+
sage: # needs sage.rings.padics
|
|
169
|
+
sage: K = Qp(3)
|
|
170
|
+
sage: R.<a> = K[]
|
|
171
|
+
sage: L.<a> = K.extension(a^2-3)
|
|
172
|
+
sage: L.ideal(a)
|
|
173
|
+
Principal ideal (1 + O(a^40)) of 3-adic Eisenstein Extension Field in a defined by a^2 - 3
|
|
174
|
+
"""
|
|
175
|
+
return self._ideal_class_(1)(self, [self.zero()])
|
|
@@ -0,0 +1,393 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Schemes
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
# ****************************************************************************
|
|
7
|
+
# Copyright (C) 2005 David Kohel <kohel@maths.usyd.edu>
|
|
8
|
+
# William Stein <wstein@math.ucsd.edu>
|
|
9
|
+
# 2008-2012 Nicolas M. Thiery <nthiery@users.sf.net>
|
|
10
|
+
#
|
|
11
|
+
# This program is free software: you can redistribute it and/or modify
|
|
12
|
+
# it under the terms of the GNU General Public License as published by
|
|
13
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
14
|
+
# (at your option) any later version.
|
|
15
|
+
# https://www.gnu.org/licenses/
|
|
16
|
+
# ****************************************************************************
|
|
17
|
+
|
|
18
|
+
from sage.categories.category import Category
|
|
19
|
+
from sage.categories.category_types import Category_over_base
|
|
20
|
+
from sage.categories.category_with_axiom import CategoryWithAxiom
|
|
21
|
+
from sage.categories.sets_cat import Sets
|
|
22
|
+
from sage.categories.commutative_additive_groups import CommutativeAdditiveGroups
|
|
23
|
+
from sage.categories.rings import Rings
|
|
24
|
+
from sage.categories.fields import Fields
|
|
25
|
+
from sage.categories.homsets import HomsetsCategory
|
|
26
|
+
from sage.misc.abstract_method import abstract_method
|
|
27
|
+
from sage.misc.lazy_import import lazy_import
|
|
28
|
+
|
|
29
|
+
lazy_import('sage.categories.map', 'Map')
|
|
30
|
+
lazy_import('sage.schemes.generic.morphism', 'SchemeMorphism')
|
|
31
|
+
lazy_import('sage.schemes.generic.scheme', 'Scheme')
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class Schemes(Category):
|
|
35
|
+
"""
|
|
36
|
+
The category of all schemes.
|
|
37
|
+
|
|
38
|
+
EXAMPLES::
|
|
39
|
+
|
|
40
|
+
sage: Schemes()
|
|
41
|
+
Category of schemes
|
|
42
|
+
|
|
43
|
+
``Schemes`` can also be used to construct the category of schemes
|
|
44
|
+
over a given base::
|
|
45
|
+
|
|
46
|
+
sage: Schemes(Spec(ZZ))
|
|
47
|
+
Category of schemes over Integer Ring
|
|
48
|
+
|
|
49
|
+
sage: Schemes(ZZ)
|
|
50
|
+
Category of schemes over Integer Ring
|
|
51
|
+
|
|
52
|
+
.. TODO::
|
|
53
|
+
|
|
54
|
+
Make ``Schemes()`` a singleton category (and remove
|
|
55
|
+
:class:`Schemes` from the workaround in
|
|
56
|
+
:meth:`.category_types.Category_over_base._test_category_over_bases`).
|
|
57
|
+
|
|
58
|
+
This is currently incompatible with the dispatching below.
|
|
59
|
+
|
|
60
|
+
TESTS::
|
|
61
|
+
|
|
62
|
+
sage: TestSuite(Schemes()).run()
|
|
63
|
+
|
|
64
|
+
Check that Hom sets of schemes are in the correct category::
|
|
65
|
+
|
|
66
|
+
sage: Schemes().Homsets().super_categories()
|
|
67
|
+
[Category of homsets]
|
|
68
|
+
"""
|
|
69
|
+
@staticmethod
|
|
70
|
+
def __classcall_private__(cls, X=None):
|
|
71
|
+
"""
|
|
72
|
+
Implement the dispatching ``Schemes(ZZ)`` -> ``Schemes_over_base``.
|
|
73
|
+
|
|
74
|
+
EXAMPLES::
|
|
75
|
+
|
|
76
|
+
sage: Schemes()
|
|
77
|
+
Category of schemes
|
|
78
|
+
|
|
79
|
+
sage: Schemes(Spec(ZZ))
|
|
80
|
+
Category of schemes over Integer Ring
|
|
81
|
+
|
|
82
|
+
sage: Schemes(ZZ)
|
|
83
|
+
Category of schemes over Integer Ring
|
|
84
|
+
"""
|
|
85
|
+
if X is not None:
|
|
86
|
+
if X not in Schemes():
|
|
87
|
+
X = Schemes()(X)
|
|
88
|
+
return Schemes_over_base(X)
|
|
89
|
+
return super().__classcall__(cls)
|
|
90
|
+
|
|
91
|
+
def super_categories(self):
|
|
92
|
+
"""
|
|
93
|
+
EXAMPLES::
|
|
94
|
+
|
|
95
|
+
sage: Schemes().super_categories()
|
|
96
|
+
[Category of sets]
|
|
97
|
+
"""
|
|
98
|
+
return [Sets()]
|
|
99
|
+
|
|
100
|
+
def _call_(self, x):
|
|
101
|
+
"""
|
|
102
|
+
Construct a scheme from the data in ``x``.
|
|
103
|
+
|
|
104
|
+
EXAMPLES:
|
|
105
|
+
|
|
106
|
+
Let us first construct the category of schemes::
|
|
107
|
+
|
|
108
|
+
sage: S = Schemes(); S
|
|
109
|
+
Category of schemes
|
|
110
|
+
|
|
111
|
+
We create a scheme from a ring::
|
|
112
|
+
|
|
113
|
+
sage: X = S(ZZ); X # indirect doctest
|
|
114
|
+
Spectrum of Integer Ring
|
|
115
|
+
|
|
116
|
+
We create a scheme from a scheme (do nothing)::
|
|
117
|
+
|
|
118
|
+
sage: S(X)
|
|
119
|
+
Spectrum of Integer Ring
|
|
120
|
+
|
|
121
|
+
We create a scheme morphism from a ring homomorphism.x::
|
|
122
|
+
|
|
123
|
+
sage: phi = ZZ.hom(QQ); phi
|
|
124
|
+
Natural morphism:
|
|
125
|
+
From: Integer Ring
|
|
126
|
+
To: Rational Field
|
|
127
|
+
sage: f = S(phi); f # indirect doctest
|
|
128
|
+
Affine Scheme morphism:
|
|
129
|
+
From: Spectrum of Rational Field
|
|
130
|
+
To: Spectrum of Integer Ring
|
|
131
|
+
Defn: Natural morphism:
|
|
132
|
+
From: Integer Ring
|
|
133
|
+
To: Rational Field
|
|
134
|
+
|
|
135
|
+
sage: f.domain()
|
|
136
|
+
Spectrum of Rational Field
|
|
137
|
+
sage: f.codomain()
|
|
138
|
+
Spectrum of Integer Ring
|
|
139
|
+
sage: S(f) # indirect doctest
|
|
140
|
+
Affine Scheme morphism:
|
|
141
|
+
From: Spectrum of Rational Field
|
|
142
|
+
To: Spectrum of Integer Ring
|
|
143
|
+
Defn: Natural morphism:
|
|
144
|
+
From: Integer Ring
|
|
145
|
+
To: Rational Field
|
|
146
|
+
"""
|
|
147
|
+
if isinstance(x, (SchemeMorphism, Scheme)):
|
|
148
|
+
return x
|
|
149
|
+
from sage.categories.commutative_rings import CommutativeRings
|
|
150
|
+
from sage.schemes.generic.spec import Spec
|
|
151
|
+
if x in CommutativeRings():
|
|
152
|
+
return Spec(x)
|
|
153
|
+
elif isinstance(x, Map) and x.category_for().is_subcategory(Rings()):
|
|
154
|
+
# x is a morphism of Rings
|
|
155
|
+
A = Spec(x.codomain())
|
|
156
|
+
return A.hom(x)
|
|
157
|
+
else:
|
|
158
|
+
raise TypeError("No way to create an object or morphism in %s from %s" % (self, x))
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
class Schemes_over_base(Category_over_base):
|
|
162
|
+
"""
|
|
163
|
+
The category of schemes over a given base scheme.
|
|
164
|
+
|
|
165
|
+
EXAMPLES::
|
|
166
|
+
|
|
167
|
+
sage: Schemes(Spec(ZZ))
|
|
168
|
+
Category of schemes over Integer Ring
|
|
169
|
+
|
|
170
|
+
TESTS::
|
|
171
|
+
|
|
172
|
+
sage: C = Schemes(ZZ)
|
|
173
|
+
sage: TestSuite(C).run()
|
|
174
|
+
"""
|
|
175
|
+
def base_scheme(self):
|
|
176
|
+
"""
|
|
177
|
+
EXAMPLES::
|
|
178
|
+
|
|
179
|
+
sage: Schemes(Spec(ZZ)).base_scheme()
|
|
180
|
+
Spectrum of Integer Ring
|
|
181
|
+
"""
|
|
182
|
+
return self.base()
|
|
183
|
+
|
|
184
|
+
def super_categories(self):
|
|
185
|
+
"""
|
|
186
|
+
EXAMPLES::
|
|
187
|
+
|
|
188
|
+
sage: Schemes(Spec(ZZ)).super_categories()
|
|
189
|
+
[Category of schemes]
|
|
190
|
+
"""
|
|
191
|
+
return [Schemes()]
|
|
192
|
+
|
|
193
|
+
def _repr_object_names(self):
|
|
194
|
+
"""
|
|
195
|
+
EXAMPLES::
|
|
196
|
+
|
|
197
|
+
sage: Schemes(Spec(ZZ)) # indirect doctest
|
|
198
|
+
Category of schemes over Integer Ring
|
|
199
|
+
"""
|
|
200
|
+
from sage.schemes.generic.scheme import AffineScheme
|
|
201
|
+
base = self.base()
|
|
202
|
+
if isinstance(base, AffineScheme):
|
|
203
|
+
base = base.coordinate_ring()
|
|
204
|
+
return f"schemes over {base}"
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
class AbelianVarieties(Schemes_over_base):
|
|
208
|
+
r"""
|
|
209
|
+
The category of abelian varieties over a given field.
|
|
210
|
+
|
|
211
|
+
EXAMPLES::
|
|
212
|
+
|
|
213
|
+
sage: AbelianVarieties(QQ)
|
|
214
|
+
Category of abelian varieties over Rational Field
|
|
215
|
+
sage: AbelianVarieties(ZZ)
|
|
216
|
+
Traceback (most recent call last):
|
|
217
|
+
...
|
|
218
|
+
ValueError: category of abelian varieties is only defined over fields
|
|
219
|
+
"""
|
|
220
|
+
def __init__(self, base):
|
|
221
|
+
r"""
|
|
222
|
+
Constructor for the ``AbelianVarieties`` category.
|
|
223
|
+
|
|
224
|
+
EXAMPLES::
|
|
225
|
+
|
|
226
|
+
sage: AbelianVarieties(QQ)
|
|
227
|
+
Category of abelian varieties over Rational Field
|
|
228
|
+
sage: AbelianVarieties(Spec(QQ))
|
|
229
|
+
Category of abelian varieties over Rational Field
|
|
230
|
+
"""
|
|
231
|
+
from sage.schemes.generic.scheme import AffineScheme
|
|
232
|
+
if isinstance(base, AffineScheme):
|
|
233
|
+
base = base.coordinate_ring()
|
|
234
|
+
if base not in Fields():
|
|
235
|
+
raise ValueError('category of abelian varieties is only defined over fields')
|
|
236
|
+
super().__init__(base)
|
|
237
|
+
|
|
238
|
+
def base_scheme(self):
|
|
239
|
+
"""
|
|
240
|
+
EXAMPLES::
|
|
241
|
+
|
|
242
|
+
sage: Schemes(Spec(ZZ)).base_scheme()
|
|
243
|
+
Spectrum of Integer Ring
|
|
244
|
+
"""
|
|
245
|
+
base = self.base()
|
|
246
|
+
if base not in Schemes():
|
|
247
|
+
base = Schemes()(base)
|
|
248
|
+
return base
|
|
249
|
+
|
|
250
|
+
def super_categories(self):
|
|
251
|
+
"""
|
|
252
|
+
EXAMPLES::
|
|
253
|
+
|
|
254
|
+
sage: AbelianVarieties(QQ).super_categories()
|
|
255
|
+
[Category of schemes over Rational Field,
|
|
256
|
+
Category of commutative additive groups]
|
|
257
|
+
"""
|
|
258
|
+
return [Schemes(self.base_scheme()), CommutativeAdditiveGroups()]
|
|
259
|
+
|
|
260
|
+
def _repr_object_names(self):
|
|
261
|
+
"""
|
|
262
|
+
EXAMPLES::
|
|
263
|
+
|
|
264
|
+
sage: AbelianVarieties(Spec(QQ)) # indirect doctest
|
|
265
|
+
Category of abelian varieties over Rational Field
|
|
266
|
+
"""
|
|
267
|
+
return "abelian varieties over %s" % self.base()
|
|
268
|
+
|
|
269
|
+
class Homsets(HomsetsCategory):
|
|
270
|
+
r"""
|
|
271
|
+
Overloaded ``Homsets`` class to register the homset
|
|
272
|
+
as an additive abelian group.
|
|
273
|
+
|
|
274
|
+
EXAMPLES::
|
|
275
|
+
|
|
276
|
+
sage: AbelianVarieties(QQ).Homsets().is_subcategory(CommutativeAdditiveGroups())
|
|
277
|
+
True
|
|
278
|
+
"""
|
|
279
|
+
def extra_super_categories(self):
|
|
280
|
+
r"""
|
|
281
|
+
Register the homset as an additive abelian group.
|
|
282
|
+
|
|
283
|
+
EXAMPLES::
|
|
284
|
+
|
|
285
|
+
sage: # needs sage.schemes
|
|
286
|
+
sage: Hom(EllipticCurve(j=1), EllipticCurve(j=2)) in CommutativeAdditiveGroups()
|
|
287
|
+
True
|
|
288
|
+
"""
|
|
289
|
+
return [CommutativeAdditiveGroups()]
|
|
290
|
+
|
|
291
|
+
class Endset(CategoryWithAxiom):
|
|
292
|
+
r"""
|
|
293
|
+
Overloaded ``Endset`` class to register the endset
|
|
294
|
+
as a ring.
|
|
295
|
+
|
|
296
|
+
sage: AbelianVarieties(QQ).Endsets().is_subcategory(Rings())
|
|
297
|
+
True
|
|
298
|
+
"""
|
|
299
|
+
def extra_super_categories(self):
|
|
300
|
+
r"""
|
|
301
|
+
Register the endset as a ring.
|
|
302
|
+
|
|
303
|
+
EXAMPLES::
|
|
304
|
+
|
|
305
|
+
sage: # needs sage.schemes
|
|
306
|
+
sage: End(EllipticCurve(j=1)) in Rings()
|
|
307
|
+
True
|
|
308
|
+
"""
|
|
309
|
+
return [Rings()]
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
class Jacobians(Schemes_over_base):
|
|
313
|
+
"""
|
|
314
|
+
The category of Jacobians attached to curves or function fields.
|
|
315
|
+
|
|
316
|
+
EXAMPLES::
|
|
317
|
+
|
|
318
|
+
sage: Jacobians(QQ)
|
|
319
|
+
Category of Jacobians over Rational Field
|
|
320
|
+
|
|
321
|
+
TESTS::
|
|
322
|
+
|
|
323
|
+
sage: TestSuite(Jacobians(QQ)).run()
|
|
324
|
+
"""
|
|
325
|
+
def __init__(self, base):
|
|
326
|
+
r"""
|
|
327
|
+
Constructor of this category.
|
|
328
|
+
|
|
329
|
+
EXAMPLES::
|
|
330
|
+
|
|
331
|
+
sage: Jacobians(QQ)
|
|
332
|
+
Category of Jacobians over Rational Field
|
|
333
|
+
sage: Jacobians(Spec(QQ))
|
|
334
|
+
Category of Jacobians over Rational Field
|
|
335
|
+
"""
|
|
336
|
+
from sage.schemes.generic.scheme import AffineScheme
|
|
337
|
+
if isinstance(base, AffineScheme):
|
|
338
|
+
base = base.coordinate_ring()
|
|
339
|
+
if base not in Fields():
|
|
340
|
+
raise ValueError('category of Jacobians is only defined over fields')
|
|
341
|
+
super().__init__(base)
|
|
342
|
+
|
|
343
|
+
def base_scheme(self):
|
|
344
|
+
"""
|
|
345
|
+
Return the base scheme of this Jacobians category.
|
|
346
|
+
|
|
347
|
+
EXAMPLES::
|
|
348
|
+
|
|
349
|
+
sage: Jacobians(QQ).base_scheme()
|
|
350
|
+
Spectrum of Rational Field
|
|
351
|
+
"""
|
|
352
|
+
base = self.base()
|
|
353
|
+
if base not in Schemes():
|
|
354
|
+
base = Schemes()(base)
|
|
355
|
+
return base
|
|
356
|
+
|
|
357
|
+
def super_categories(self):
|
|
358
|
+
"""
|
|
359
|
+
Return the super categories of this Jacobians category.
|
|
360
|
+
|
|
361
|
+
EXAMPLES::
|
|
362
|
+
|
|
363
|
+
sage: Jacobians(QQ).super_categories()
|
|
364
|
+
[Category of abelian varieties over Rational Field]
|
|
365
|
+
"""
|
|
366
|
+
return [AbelianVarieties(self.base_scheme())]
|
|
367
|
+
|
|
368
|
+
def _repr_object_names(self):
|
|
369
|
+
"""
|
|
370
|
+
Return the string representation of this category.
|
|
371
|
+
|
|
372
|
+
EXAMPLES::
|
|
373
|
+
|
|
374
|
+
sage: Jacobians(Spec(QQ)) # indirect doctest
|
|
375
|
+
Category of Jacobians over Rational Field
|
|
376
|
+
"""
|
|
377
|
+
return "Jacobians over %s" % self.base()
|
|
378
|
+
|
|
379
|
+
class ParentMethods:
|
|
380
|
+
|
|
381
|
+
@abstract_method
|
|
382
|
+
def base_curve(self):
|
|
383
|
+
"""
|
|
384
|
+
Return the curve to which this Jacobian is attached.
|
|
385
|
+
|
|
386
|
+
EXAMPLES::
|
|
387
|
+
|
|
388
|
+
sage: # needs sage.rings.function_field
|
|
389
|
+
sage: K.<x> = FunctionField(GF(2))
|
|
390
|
+
sage: J = K.jacobian()
|
|
391
|
+
sage: J.base_curve()
|
|
392
|
+
Rational function field in x over Finite Field of size 2
|
|
393
|
+
"""
|