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,372 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
"""
|
|
3
|
+
Finite prime fields
|
|
4
|
+
|
|
5
|
+
AUTHORS:
|
|
6
|
+
|
|
7
|
+
- William Stein: initial version
|
|
8
|
+
|
|
9
|
+
- Martin Albrecht (2008-01): refactoring
|
|
10
|
+
|
|
11
|
+
TESTS::
|
|
12
|
+
|
|
13
|
+
sage: k = GF(3)
|
|
14
|
+
sage: TestSuite(k).run()
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
#*****************************************************************************
|
|
18
|
+
# Copyright (C) 2006 William Stein <wstein@gmail.com>
|
|
19
|
+
# Copyright (C) 2008 Martin Albrecht <malb@informatik.uni-bremen.de>
|
|
20
|
+
#
|
|
21
|
+
# This program is free software: you can redistribute it and/or modify
|
|
22
|
+
# it under the terms of the GNU General Public License as published by
|
|
23
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
24
|
+
# (at your option) any later version.
|
|
25
|
+
# http://www.gnu.org/licenses/
|
|
26
|
+
#*****************************************************************************`
|
|
27
|
+
|
|
28
|
+
from sage.rings.finite_rings.finite_field_base import FiniteField as FiniteField_generic
|
|
29
|
+
from sage.categories.finite_fields import FiniteFields
|
|
30
|
+
_FiniteFields = FiniteFields()
|
|
31
|
+
|
|
32
|
+
import sage.rings.finite_rings.integer_mod_ring as integer_mod_ring
|
|
33
|
+
from sage.rings.integer import Integer
|
|
34
|
+
import sage.rings.finite_rings.integer_mod as integer_mod
|
|
35
|
+
|
|
36
|
+
from sage.rings.integer_ring import ZZ
|
|
37
|
+
from sage.rings.finite_rings.integer_mod_ring import IntegerModRing_generic
|
|
38
|
+
|
|
39
|
+
from sage.misc.persist import register_unpickle_override
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
class FiniteField_prime_modn(FiniteField_generic, integer_mod_ring.IntegerModRing_generic):
|
|
43
|
+
r"""
|
|
44
|
+
Finite field of order `p` where `p` is prime.
|
|
45
|
+
|
|
46
|
+
EXAMPLES::
|
|
47
|
+
|
|
48
|
+
sage: FiniteField(3)
|
|
49
|
+
Finite Field of size 3
|
|
50
|
+
|
|
51
|
+
sage: FiniteField(next_prime(1000)) # needs sage.rings.finite_rings
|
|
52
|
+
Finite Field of size 1009
|
|
53
|
+
"""
|
|
54
|
+
def __init__(self, p, check=True, modulus=None):
|
|
55
|
+
"""
|
|
56
|
+
Return a new finite field of order `p` where `p` is prime.
|
|
57
|
+
|
|
58
|
+
INPUT:
|
|
59
|
+
|
|
60
|
+
- ``p`` -- integer at least 2
|
|
61
|
+
|
|
62
|
+
- ``check`` -- boolean (default: ``True``); if ``False``, do not
|
|
63
|
+
check ``p`` for primality
|
|
64
|
+
|
|
65
|
+
EXAMPLES::
|
|
66
|
+
|
|
67
|
+
sage: F = FiniteField(3); F
|
|
68
|
+
Finite Field of size 3
|
|
69
|
+
"""
|
|
70
|
+
p = Integer(p)
|
|
71
|
+
if check and not p.is_prime():
|
|
72
|
+
raise ArithmeticError("p must be prime")
|
|
73
|
+
self.__char = p
|
|
74
|
+
# FiniteField_generic does nothing more than IntegerModRing_generic, and
|
|
75
|
+
# it saves a non trivial overhead
|
|
76
|
+
integer_mod_ring.IntegerModRing_generic.__init__(self, p, category=_FiniteFields)
|
|
77
|
+
|
|
78
|
+
# If modulus is None, it will be created on demand as x-1
|
|
79
|
+
# by the modulus() method.
|
|
80
|
+
if modulus is not None:
|
|
81
|
+
self._modulus = modulus
|
|
82
|
+
|
|
83
|
+
def __reduce__(self):
|
|
84
|
+
"""
|
|
85
|
+
For pickling.
|
|
86
|
+
|
|
87
|
+
EXAMPLES::
|
|
88
|
+
|
|
89
|
+
sage: k = FiniteField(5); type(k)
|
|
90
|
+
<class 'sage.rings.finite_rings.finite_field_prime_modn.FiniteField_prime_modn_with_category'>
|
|
91
|
+
sage: k is loads(dumps(k))
|
|
92
|
+
True
|
|
93
|
+
"""
|
|
94
|
+
return self._factory_data[0].reduce_data(self)
|
|
95
|
+
|
|
96
|
+
def _coerce_map_from_(self, S):
|
|
97
|
+
"""
|
|
98
|
+
This is called implicitly by arithmetic methods.
|
|
99
|
+
|
|
100
|
+
EXAMPLES::
|
|
101
|
+
|
|
102
|
+
sage: k = GF(7)
|
|
103
|
+
sage: e = k(6)
|
|
104
|
+
sage: e * 2 # indirect doctest
|
|
105
|
+
5
|
|
106
|
+
sage: 12 % 7
|
|
107
|
+
5
|
|
108
|
+
|
|
109
|
+
sage: ZZ.residue_field(7).hom(GF(7))(1) # See trac 11319
|
|
110
|
+
1
|
|
111
|
+
|
|
112
|
+
sage: # needs sage.rings.finite_rings sage.rings.number_field
|
|
113
|
+
sage: K.<w> = QuadraticField(337) # See trac 11319
|
|
114
|
+
sage: pp = K.ideal(13).factor()[0][0]
|
|
115
|
+
sage: RF13 = K.residue_field(pp)
|
|
116
|
+
sage: RF13.hom([GF(13)(1)])
|
|
117
|
+
Ring morphism:
|
|
118
|
+
From: Residue field of Fractional ideal (w + 18)
|
|
119
|
+
To: Finite Field of size 13
|
|
120
|
+
Defn: 1 |--> 1
|
|
121
|
+
|
|
122
|
+
Check that :issue:`19573` is resolved::
|
|
123
|
+
|
|
124
|
+
sage: Integers(9).hom(GF(3))
|
|
125
|
+
Natural morphism:
|
|
126
|
+
From: Ring of integers modulo 9
|
|
127
|
+
To: Finite Field of size 3
|
|
128
|
+
|
|
129
|
+
sage: Integers(9).hom(GF(5))
|
|
130
|
+
Traceback (most recent call last):
|
|
131
|
+
...
|
|
132
|
+
TypeError: natural coercion morphism from Ring of integers modulo 9 to Finite Field of size 5 not defined
|
|
133
|
+
|
|
134
|
+
There is no coercion from a `p`-adic ring to its residue field::
|
|
135
|
+
|
|
136
|
+
sage: GF(3).has_coerce_map_from(Zp(3)) # needs sage.rings.padics
|
|
137
|
+
False
|
|
138
|
+
"""
|
|
139
|
+
if S is int:
|
|
140
|
+
return integer_mod.Int_to_IntegerMod(self)
|
|
141
|
+
elif S is ZZ:
|
|
142
|
+
return integer_mod.Integer_to_IntegerMod(self)
|
|
143
|
+
elif isinstance(S, IntegerModRing_generic):
|
|
144
|
+
from .residue_field import ResidueField_generic
|
|
145
|
+
if (S.characteristic() % self.characteristic() == 0 and
|
|
146
|
+
(not isinstance(S, ResidueField_generic) or
|
|
147
|
+
S.degree() == 1)):
|
|
148
|
+
try:
|
|
149
|
+
return integer_mod.IntegerMod_to_IntegerMod(S, self)
|
|
150
|
+
except TypeError:
|
|
151
|
+
pass
|
|
152
|
+
to_ZZ = ZZ._internal_coerce_map_from(S)
|
|
153
|
+
if to_ZZ is not None:
|
|
154
|
+
return integer_mod.Integer_to_IntegerMod(self) * to_ZZ
|
|
155
|
+
|
|
156
|
+
def _convert_map_from_(self, R):
|
|
157
|
+
"""
|
|
158
|
+
Conversion from `p`-adic fields.
|
|
159
|
+
|
|
160
|
+
EXAMPLES::
|
|
161
|
+
|
|
162
|
+
sage: # needs sage.rings.padics
|
|
163
|
+
sage: GF(3).convert_map_from(Qp(3))
|
|
164
|
+
Reduction morphism:
|
|
165
|
+
From: 3-adic Field with capped relative precision 20
|
|
166
|
+
To: Finite Field of size 3
|
|
167
|
+
sage: GF(3).convert_map_from(Zp(3))
|
|
168
|
+
Reduction morphism:
|
|
169
|
+
From: 3-adic Ring with capped relative precision 20
|
|
170
|
+
To: Finite Field of size 3
|
|
171
|
+
"""
|
|
172
|
+
from sage.rings.padics.padic_generic import pAdicGeneric, ResidueReductionMap
|
|
173
|
+
if isinstance(R, pAdicGeneric) and R.residue_field() is self:
|
|
174
|
+
return ResidueReductionMap._create_(R, self)
|
|
175
|
+
|
|
176
|
+
def construction(self):
|
|
177
|
+
"""
|
|
178
|
+
Return the construction of this finite field (for use by
|
|
179
|
+
``sage.categories.pushout``).
|
|
180
|
+
|
|
181
|
+
EXAMPLES::
|
|
182
|
+
|
|
183
|
+
sage: GF(3).construction()
|
|
184
|
+
(QuotientFunctor, Integer Ring)
|
|
185
|
+
"""
|
|
186
|
+
return integer_mod_ring.IntegerModRing_generic.construction(self)
|
|
187
|
+
|
|
188
|
+
def characteristic(self):
|
|
189
|
+
r"""
|
|
190
|
+
Return the characteristic of \code{self}.
|
|
191
|
+
|
|
192
|
+
EXAMPLES::
|
|
193
|
+
|
|
194
|
+
sage: k = GF(7)
|
|
195
|
+
sage: k.characteristic()
|
|
196
|
+
7
|
|
197
|
+
"""
|
|
198
|
+
return self.__char
|
|
199
|
+
|
|
200
|
+
def is_prime_field(self):
|
|
201
|
+
"""
|
|
202
|
+
Return ``True`` since this is a prime field.
|
|
203
|
+
|
|
204
|
+
EXAMPLES::
|
|
205
|
+
|
|
206
|
+
sage: k.<a> = GF(3)
|
|
207
|
+
sage: k.is_prime_field()
|
|
208
|
+
True
|
|
209
|
+
|
|
210
|
+
sage: # needs sage.rings.finite_rings
|
|
211
|
+
sage: k.<a> = GF(3^2)
|
|
212
|
+
sage: k.is_prime_field()
|
|
213
|
+
False
|
|
214
|
+
"""
|
|
215
|
+
return True
|
|
216
|
+
|
|
217
|
+
def polynomial(self, name=None):
|
|
218
|
+
"""
|
|
219
|
+
Return the polynomial ``name``.
|
|
220
|
+
|
|
221
|
+
EXAMPLES::
|
|
222
|
+
|
|
223
|
+
sage: k.<a> = GF(3)
|
|
224
|
+
sage: k.polynomial()
|
|
225
|
+
x
|
|
226
|
+
"""
|
|
227
|
+
if name is None:
|
|
228
|
+
name = self.variable_name()
|
|
229
|
+
try:
|
|
230
|
+
return self.__polynomial[name]
|
|
231
|
+
except AttributeError:
|
|
232
|
+
f = self[name]([0, 1])
|
|
233
|
+
try:
|
|
234
|
+
self.__polynomial[name] = f
|
|
235
|
+
except (KeyError, AttributeError):
|
|
236
|
+
self.__polynomial = {}
|
|
237
|
+
self.__polynomial[name] = f
|
|
238
|
+
return f
|
|
239
|
+
|
|
240
|
+
def order(self):
|
|
241
|
+
"""
|
|
242
|
+
Return the order of this finite field.
|
|
243
|
+
|
|
244
|
+
EXAMPLES::
|
|
245
|
+
|
|
246
|
+
sage: k = GF(5)
|
|
247
|
+
sage: k.order()
|
|
248
|
+
5
|
|
249
|
+
"""
|
|
250
|
+
return self.__char
|
|
251
|
+
|
|
252
|
+
def gen(self, n=0):
|
|
253
|
+
"""
|
|
254
|
+
Return a generator of ``self`` over its prime field, which is a
|
|
255
|
+
root of ``self.modulus()``.
|
|
256
|
+
|
|
257
|
+
Unless a custom modulus was given when constructing this prime
|
|
258
|
+
field, this returns `1`.
|
|
259
|
+
|
|
260
|
+
INPUT:
|
|
261
|
+
|
|
262
|
+
- ``n`` -- must be 0
|
|
263
|
+
|
|
264
|
+
OUTPUT:
|
|
265
|
+
|
|
266
|
+
An element `a` of ``self`` such that ``self.modulus()(a) == 0``.
|
|
267
|
+
|
|
268
|
+
.. WARNING::
|
|
269
|
+
|
|
270
|
+
This generator is not guaranteed to be a generator for the
|
|
271
|
+
multiplicative group. To obtain the latter, use
|
|
272
|
+
:meth:`~sage.rings.finite_rings.finite_field_base.FiniteFields.multiplicative_generator()`
|
|
273
|
+
or use the ``modulus="primitive"`` option when constructing
|
|
274
|
+
the field.
|
|
275
|
+
|
|
276
|
+
EXAMPLES::
|
|
277
|
+
|
|
278
|
+
sage: k = GF(13)
|
|
279
|
+
sage: k.gen()
|
|
280
|
+
1
|
|
281
|
+
|
|
282
|
+
sage: # needs sage.rings.finite_rings
|
|
283
|
+
sage: k = GF(1009, modulus='primitive')
|
|
284
|
+
sage: k.gen() # this gives a primitive element
|
|
285
|
+
11
|
|
286
|
+
sage: k.gen(1)
|
|
287
|
+
Traceback (most recent call last):
|
|
288
|
+
...
|
|
289
|
+
IndexError: only one generator
|
|
290
|
+
"""
|
|
291
|
+
if n:
|
|
292
|
+
raise IndexError("only one generator")
|
|
293
|
+
try:
|
|
294
|
+
return self.__gen
|
|
295
|
+
except AttributeError:
|
|
296
|
+
pass
|
|
297
|
+
|
|
298
|
+
try:
|
|
299
|
+
self.__gen = -(self._modulus[0])
|
|
300
|
+
except AttributeError:
|
|
301
|
+
self.__gen = self.one()
|
|
302
|
+
return self.__gen
|
|
303
|
+
|
|
304
|
+
def gens(self) -> tuple:
|
|
305
|
+
r"""
|
|
306
|
+
Return a tuple containing the generator of ``self``.
|
|
307
|
+
|
|
308
|
+
.. WARNING::
|
|
309
|
+
|
|
310
|
+
The generator is not guaranteed to be a generator for the
|
|
311
|
+
multiplicative group. To obtain the latter, use
|
|
312
|
+
:meth:`~sage.rings.finite_rings.finite_field_base.FiniteFields.multiplicative_generator()`
|
|
313
|
+
or use the ``modulus="primitive"`` option when constructing
|
|
314
|
+
the field.
|
|
315
|
+
|
|
316
|
+
EXAMPLES::
|
|
317
|
+
|
|
318
|
+
sage: # needs sage.rings.finite_rings
|
|
319
|
+
sage: k = GF(1009, modulus='primitive')
|
|
320
|
+
sage: k.gens()
|
|
321
|
+
(11,)
|
|
322
|
+
sage: k = GF(1009)
|
|
323
|
+
sage: k.gens()
|
|
324
|
+
(1,)
|
|
325
|
+
"""
|
|
326
|
+
return (self.gen(),)
|
|
327
|
+
|
|
328
|
+
def __iter__(self):
|
|
329
|
+
"""
|
|
330
|
+
Return an iterator over ``self``.
|
|
331
|
+
|
|
332
|
+
EXAMPLES::
|
|
333
|
+
|
|
334
|
+
sage: list(GF(7))
|
|
335
|
+
[0, 1, 2, 3, 4, 5, 6]
|
|
336
|
+
|
|
337
|
+
We can even start iterating over something that would be too big
|
|
338
|
+
to actually enumerate::
|
|
339
|
+
|
|
340
|
+
sage: # needs sage.rings.finite_rings
|
|
341
|
+
sage: K = GF(next_prime(2^256))
|
|
342
|
+
sage: all = iter(K)
|
|
343
|
+
sage: next(all)
|
|
344
|
+
0
|
|
345
|
+
sage: next(all)
|
|
346
|
+
1
|
|
347
|
+
sage: next(all)
|
|
348
|
+
2
|
|
349
|
+
"""
|
|
350
|
+
yield self(0)
|
|
351
|
+
i = one = self(1)
|
|
352
|
+
while i:
|
|
353
|
+
yield i
|
|
354
|
+
i += one
|
|
355
|
+
|
|
356
|
+
def degree(self):
|
|
357
|
+
"""
|
|
358
|
+
Return the degree of ``self`` over its prime field.
|
|
359
|
+
|
|
360
|
+
This always returns 1.
|
|
361
|
+
|
|
362
|
+
EXAMPLES::
|
|
363
|
+
|
|
364
|
+
sage: FiniteField(3).degree()
|
|
365
|
+
1
|
|
366
|
+
"""
|
|
367
|
+
return Integer(1)
|
|
368
|
+
|
|
369
|
+
|
|
370
|
+
register_unpickle_override(
|
|
371
|
+
'sage.rings.finite_field_prime_modn', 'FiniteField_prime_modn',
|
|
372
|
+
FiniteField_prime_modn)
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
# sage.doctest: needs sage.modules sage.rings.finite_rings
|
|
3
|
+
r"""
|
|
4
|
+
Galois groups of Finite Fields
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from sage.groups.abelian_gps.abelian_group_element import AbelianGroupElement
|
|
8
|
+
from sage.groups.galois_group import GaloisGroup_cyc
|
|
9
|
+
from sage.rings.integer_ring import ZZ
|
|
10
|
+
from sage.rings.finite_rings.hom_finite_field import FiniteFieldHomomorphism_generic, FrobeniusEndomorphism_finite_field
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class GaloisGroup_GFElement(AbelianGroupElement):
|
|
14
|
+
def as_hom(self):
|
|
15
|
+
r"""
|
|
16
|
+
Return the automorphism of the finite field corresponding to this element.
|
|
17
|
+
|
|
18
|
+
EXAMPLES::
|
|
19
|
+
|
|
20
|
+
sage: GF(3^6).galois_group()([4]).as_hom()
|
|
21
|
+
Frobenius endomorphism z6 |--> z6^(3^4) on Finite Field in z6 of size 3^6
|
|
22
|
+
"""
|
|
23
|
+
n = self.exponents()[0]
|
|
24
|
+
return self.parent()._field.frobenius_endomorphism(n)
|
|
25
|
+
|
|
26
|
+
def __call__(self, x):
|
|
27
|
+
r"""
|
|
28
|
+
Return the action of this automorphism on an element `x` of the finite field.
|
|
29
|
+
|
|
30
|
+
EXAMPLES::
|
|
31
|
+
|
|
32
|
+
sage: k.<a> = GF(3^6)
|
|
33
|
+
sage: g = k.galois_group()([4])
|
|
34
|
+
sage: g(a) == a^(3^4)
|
|
35
|
+
True
|
|
36
|
+
"""
|
|
37
|
+
return self.as_hom()(x)
|
|
38
|
+
|
|
39
|
+
def fixed_field(self):
|
|
40
|
+
r"""
|
|
41
|
+
The fixed field of this automorphism.
|
|
42
|
+
|
|
43
|
+
EXAMPLES::
|
|
44
|
+
|
|
45
|
+
sage: k.<a> = GF(3^12)
|
|
46
|
+
sage: g = k.galois_group()([8])
|
|
47
|
+
sage: k0, embed = g.fixed_field()
|
|
48
|
+
sage: k0.cardinality()
|
|
49
|
+
81
|
|
50
|
+
sage: embed.domain() is k0
|
|
51
|
+
True
|
|
52
|
+
sage: embed.codomain() is k
|
|
53
|
+
True
|
|
54
|
+
"""
|
|
55
|
+
return self.as_hom().fixed_field()
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
class GaloisGroup_GF(GaloisGroup_cyc):
|
|
59
|
+
r"""
|
|
60
|
+
The Galois group of a finite field.
|
|
61
|
+
"""
|
|
62
|
+
Element = GaloisGroup_GFElement
|
|
63
|
+
|
|
64
|
+
def __init__(self, field):
|
|
65
|
+
r"""
|
|
66
|
+
Create a Galois group.
|
|
67
|
+
|
|
68
|
+
TESTS::
|
|
69
|
+
|
|
70
|
+
sage: TestSuite(GF(9).galois_group()).run()
|
|
71
|
+
"""
|
|
72
|
+
GaloisGroup_cyc.__init__(self, field, (field.degree(),), gen_names='Frob')
|
|
73
|
+
|
|
74
|
+
def _repr_(self):
|
|
75
|
+
r"""
|
|
76
|
+
String representation of this Galois group.
|
|
77
|
+
|
|
78
|
+
EXAMPLES::
|
|
79
|
+
|
|
80
|
+
sage: GF(9).galois_group()
|
|
81
|
+
Galois group C2 of GF(3^2)
|
|
82
|
+
"""
|
|
83
|
+
return "Galois group C{0} of GF({1}^{0})".format(self._field.degree(), self._field.characteristic())
|
|
84
|
+
|
|
85
|
+
def _element_constructor_(self, x, check=True):
|
|
86
|
+
r"""
|
|
87
|
+
Create an element of this Galois group from ``x``.
|
|
88
|
+
|
|
89
|
+
INPUT:
|
|
90
|
+
|
|
91
|
+
- ``x`` -- one of the following (`G` is this Galois group):
|
|
92
|
+
|
|
93
|
+
- the integer 1, denoting the identity of `G`;
|
|
94
|
+
|
|
95
|
+
- an element of `G`;
|
|
96
|
+
|
|
97
|
+
- a list of length 1, giving the exponent of Frobenius
|
|
98
|
+
|
|
99
|
+
- a permutation of the right length that defines an element of `G`,
|
|
100
|
+
or anything that coerces into such a permutation;
|
|
101
|
+
|
|
102
|
+
- an automorphism of the finite field.
|
|
103
|
+
|
|
104
|
+
- ``check`` -- check that automorphisms have the correct domain and codomain
|
|
105
|
+
|
|
106
|
+
EXAMPLES::
|
|
107
|
+
|
|
108
|
+
sage: k = GF(3^3)
|
|
109
|
+
sage: G = k.galois_group()
|
|
110
|
+
sage: G(1)
|
|
111
|
+
1
|
|
112
|
+
sage: G([2])
|
|
113
|
+
Frob^2
|
|
114
|
+
sage: G(G.gens()[0])
|
|
115
|
+
Frob
|
|
116
|
+
sage: G([(1,3,2)]) # needs sage.libs.gap
|
|
117
|
+
Frob^2
|
|
118
|
+
sage: G(k.hom(k.gen()^3, k))
|
|
119
|
+
Frob
|
|
120
|
+
sage: G(k.frobenius_endomorphism())
|
|
121
|
+
Frob
|
|
122
|
+
"""
|
|
123
|
+
if x == 1:
|
|
124
|
+
return self.element_class(self, [0])
|
|
125
|
+
|
|
126
|
+
k = self._field
|
|
127
|
+
d = k.degree()
|
|
128
|
+
n = None
|
|
129
|
+
if isinstance(x, GaloisGroup_GFElement) and x.parent() is self:
|
|
130
|
+
n = x.exponents()[0]
|
|
131
|
+
elif isinstance(x, FiniteFieldHomomorphism_generic):
|
|
132
|
+
if check and not (x.domain() is k and x.codomain() is k):
|
|
133
|
+
raise ValueError("Not an automorphism of the correct finite field")
|
|
134
|
+
a = k.gen()
|
|
135
|
+
b = x(a)
|
|
136
|
+
q = k.base_ring().cardinality()
|
|
137
|
+
n = 0
|
|
138
|
+
while n < d:
|
|
139
|
+
if a == b:
|
|
140
|
+
break
|
|
141
|
+
n += 1
|
|
142
|
+
a = a**q
|
|
143
|
+
else:
|
|
144
|
+
raise RuntimeError("Automorphism was not a power of Frobenius")
|
|
145
|
+
elif isinstance(x, FrobeniusEndomorphism_finite_field):
|
|
146
|
+
if check and x.domain() is not k:
|
|
147
|
+
raise ValueError("Not an automorphism of the correct finite field")
|
|
148
|
+
n = x.power()
|
|
149
|
+
elif isinstance(x, list) and len(x) == 1 and x[0] in ZZ:
|
|
150
|
+
n = x[0]
|
|
151
|
+
else:
|
|
152
|
+
g = self.permutation_group()(x)
|
|
153
|
+
n = g(1) - 1
|
|
154
|
+
return self.element_class(self, [n])
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
from sage.rings.morphism cimport RingHomomorphism_im_gens, FrobeniusEndomorphism_generic
|
|
3
|
+
from sage.structure.element cimport Element
|
|
4
|
+
from sage.categories.map cimport Section
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
cdef class SectionFiniteFieldHomomorphism_generic(Section):
|
|
8
|
+
pass
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
cdef class FiniteFieldHomomorphism_generic(RingHomomorphism_im_gens):
|
|
12
|
+
cdef _gen
|
|
13
|
+
cdef _section_class
|
|
14
|
+
|
|
15
|
+
cpdef Element _call_(self, x)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
cdef class FrobeniusEndomorphism_finite_field(FrobeniusEndomorphism_generic):
|
|
19
|
+
cdef long _degree
|
|
20
|
+
cdef long _degree_fixed
|
|
21
|
+
cdef long _order
|
|
22
|
+
|
|
23
|
+
cpdef Element _call_(self, x)
|