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,508 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Set of homomorphisms between two affine schemes
|
|
4
|
+
|
|
5
|
+
For schemes `X` and `Y`, this module implements the set of morphisms
|
|
6
|
+
`Hom(X,Y)`. This is done by :class:`SchemeHomset_generic`.
|
|
7
|
+
|
|
8
|
+
As a special case, the Hom-sets can also represent the points of a
|
|
9
|
+
scheme. Recall that the `K`-rational points of a scheme `X` over `k`
|
|
10
|
+
can be identified with the set of morphisms `Spec(K) \to X`. In Sage
|
|
11
|
+
the rational points are implemented by such scheme morphisms. This is
|
|
12
|
+
done by :class:`SchemeHomset_points` and its subclasses.
|
|
13
|
+
|
|
14
|
+
.. NOTE::
|
|
15
|
+
|
|
16
|
+
You should not create the Hom-sets manually. Instead, use the
|
|
17
|
+
:meth:`~sage.structure.parent.Hom` method that is inherited by all
|
|
18
|
+
schemes.
|
|
19
|
+
|
|
20
|
+
AUTHORS:
|
|
21
|
+
|
|
22
|
+
- William Stein (2006): initial version.
|
|
23
|
+
|
|
24
|
+
- Ben Hutz (2018): add numerical point support
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
# *****************************************************************************
|
|
28
|
+
# Copyright (C) 2006 William Stein <wstein@gmail.com>
|
|
29
|
+
#
|
|
30
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
31
|
+
# as published by the Free Software Foundation; either version 2 of
|
|
32
|
+
# the License, or (at your option) any later version.
|
|
33
|
+
# http://www.gnu.org/licenses/
|
|
34
|
+
# *****************************************************************************
|
|
35
|
+
|
|
36
|
+
from copy import copy
|
|
37
|
+
|
|
38
|
+
from sage.misc.verbose import verbose
|
|
39
|
+
from sage.rings.integer_ring import ZZ
|
|
40
|
+
from sage.rings.rational_field import RationalField
|
|
41
|
+
from sage.categories.fields import Fields
|
|
42
|
+
from sage.categories.number_fields import NumberFields
|
|
43
|
+
from sage.rings.finite_rings.finite_field_base import FiniteField
|
|
44
|
+
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
|
|
45
|
+
from sage.schemes.generic.homset import SchemeHomset_points, SchemeHomset_generic
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
# *******************************************************************
|
|
49
|
+
# Affine varieties
|
|
50
|
+
# *******************************************************************
|
|
51
|
+
|
|
52
|
+
class SchemeHomset_points_spec(SchemeHomset_generic):
|
|
53
|
+
"""
|
|
54
|
+
Set of rational points of an affine variety.
|
|
55
|
+
|
|
56
|
+
INPUT:
|
|
57
|
+
|
|
58
|
+
See :class:`SchemeHomset_generic`.
|
|
59
|
+
|
|
60
|
+
EXAMPLES::
|
|
61
|
+
|
|
62
|
+
sage: from sage.schemes.affine.affine_homset import SchemeHomset_points_spec
|
|
63
|
+
sage: SchemeHomset_points_spec(Spec(QQ), Spec(QQ))
|
|
64
|
+
Set of rational points of Spectrum of Rational Field
|
|
65
|
+
"""
|
|
66
|
+
def _element_constructor_(self, *args, **kwds):
|
|
67
|
+
"""
|
|
68
|
+
The element constructor.
|
|
69
|
+
|
|
70
|
+
EXAMPLES::
|
|
71
|
+
|
|
72
|
+
sage: X = Spec(QQ)
|
|
73
|
+
sage: ring_hom = QQ.hom((1,), QQ); ring_hom
|
|
74
|
+
Ring endomorphism of Rational Field
|
|
75
|
+
Defn: 1 |--> 1
|
|
76
|
+
sage: H = X.Hom(X)
|
|
77
|
+
sage: H(ring_hom)
|
|
78
|
+
Affine Scheme endomorphism of Spectrum of Rational Field
|
|
79
|
+
Defn: Ring endomorphism of Rational Field
|
|
80
|
+
Defn: 1 |--> 1
|
|
81
|
+
|
|
82
|
+
TESTS::
|
|
83
|
+
|
|
84
|
+
sage: H._element_constructor_(ring_hom)
|
|
85
|
+
Affine Scheme endomorphism of Spectrum of Rational Field
|
|
86
|
+
Defn: Ring endomorphism of Rational Field
|
|
87
|
+
Defn: 1 |--> 1
|
|
88
|
+
"""
|
|
89
|
+
return super()._element_constructor_(*args, **kwds)
|
|
90
|
+
|
|
91
|
+
def _repr_(self):
|
|
92
|
+
"""
|
|
93
|
+
Return a string representation of a homset.
|
|
94
|
+
|
|
95
|
+
OUTPUT: string
|
|
96
|
+
|
|
97
|
+
EXAMPLES::
|
|
98
|
+
|
|
99
|
+
sage: from sage.schemes.affine.affine_homset import SchemeHomset_points_spec
|
|
100
|
+
sage: S = SchemeHomset_points_spec(Spec(QQ), Spec(QQ))
|
|
101
|
+
sage: S._repr_()
|
|
102
|
+
'Set of rational points of Spectrum of Rational Field'
|
|
103
|
+
"""
|
|
104
|
+
return 'Set of rational points of {}'.format(self.codomain())
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
class SchemeHomset_polynomial_affine_space(SchemeHomset_generic):
|
|
108
|
+
"""
|
|
109
|
+
Set of morphisms between affine spaces defined by polynomials.
|
|
110
|
+
|
|
111
|
+
EXAMPLES::
|
|
112
|
+
|
|
113
|
+
sage: A.<x,y> = AffineSpace(2, QQ)
|
|
114
|
+
sage: Hom(A, A)
|
|
115
|
+
Set of morphisms
|
|
116
|
+
From: Affine Space of dimension 2 over Rational Field
|
|
117
|
+
To: Affine Space of dimension 2 over Rational Field
|
|
118
|
+
"""
|
|
119
|
+
def identity(self):
|
|
120
|
+
"""
|
|
121
|
+
The identity morphism of this homset.
|
|
122
|
+
|
|
123
|
+
EXAMPLES::
|
|
124
|
+
|
|
125
|
+
sage: A.<x,y> = AffineSpace(2, QQ)
|
|
126
|
+
sage: I = A.identity_morphism()
|
|
127
|
+
sage: I.parent()
|
|
128
|
+
Set of morphisms
|
|
129
|
+
From: Affine Space of dimension 2 over Rational Field
|
|
130
|
+
To: Affine Space of dimension 2 over Rational Field
|
|
131
|
+
sage: _.identity() == I
|
|
132
|
+
True
|
|
133
|
+
"""
|
|
134
|
+
if self.is_endomorphism_set():
|
|
135
|
+
from sage.schemes.generic.morphism import SchemeMorphism_polynomial_id
|
|
136
|
+
return SchemeMorphism_polynomial_id(self.domain())
|
|
137
|
+
raise TypeError("identity map is only defined for endomorphisms")
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
# *******************************************************************
|
|
141
|
+
# Affine varieties
|
|
142
|
+
# *******************************************************************
|
|
143
|
+
|
|
144
|
+
class SchemeHomset_points_affine(SchemeHomset_points):
|
|
145
|
+
"""
|
|
146
|
+
Set of rational points of an affine variety.
|
|
147
|
+
|
|
148
|
+
INPUT:
|
|
149
|
+
|
|
150
|
+
See :class:`SchemeHomset_generic`.
|
|
151
|
+
|
|
152
|
+
EXAMPLES::
|
|
153
|
+
|
|
154
|
+
sage: from sage.schemes.affine.affine_homset import SchemeHomset_points_affine
|
|
155
|
+
sage: SchemeHomset_points_affine(Spec(QQ), AffineSpace(ZZ,2))
|
|
156
|
+
Set of rational points of Affine Space of dimension 2 over Rational Field
|
|
157
|
+
"""
|
|
158
|
+
|
|
159
|
+
def points(self, **kwds):
|
|
160
|
+
r"""
|
|
161
|
+
Return some or all rational points of an affine scheme.
|
|
162
|
+
|
|
163
|
+
For dimension 0 subschemes points are determined through a groebner
|
|
164
|
+
basis calculation. For schemes or subschemes with dimension greater than 1
|
|
165
|
+
points are determined through enumeration up to the specified bound.
|
|
166
|
+
|
|
167
|
+
Over a finite field, all points are returned. Over an infinite field, all points satisfying the bound
|
|
168
|
+
are returned. For a zero-dimensional subscheme, all points are returned regardless of whether the field
|
|
169
|
+
is infinite or not.
|
|
170
|
+
|
|
171
|
+
For number fields, this uses the
|
|
172
|
+
Doyle-Krumm algorithm 4 (algorithm 5 for imaginary quadratic) for
|
|
173
|
+
computing algebraic numbers up to a given height [DK2013]_.
|
|
174
|
+
|
|
175
|
+
The algorithm requires floating point arithmetic, so the user is
|
|
176
|
+
allowed to specify the precision for such calculations.
|
|
177
|
+
Additionally, due to floating point issues, points
|
|
178
|
+
slightly larger than the bound may be returned. This can be controlled
|
|
179
|
+
by lowering the tolerance.
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
INPUT: keyword arguments:
|
|
183
|
+
|
|
184
|
+
- ``bound`` -- real number (default: 0). The bound for the
|
|
185
|
+
height of the coordinates. Only used for subschemes with
|
|
186
|
+
dimension at least 1.
|
|
187
|
+
|
|
188
|
+
- ``zero_tolerance`` -- positive real number (default: 10^(-10)).
|
|
189
|
+
For numerically inexact fields, points are on the subscheme if they
|
|
190
|
+
satisfy the equations to within tolerance.
|
|
191
|
+
|
|
192
|
+
- ``tolerance`` -- a rational number in (0,1] used in Doyle-Krumm
|
|
193
|
+
algorithm-4 for enumeration over number fields
|
|
194
|
+
|
|
195
|
+
- ``precision`` -- the precision to use for computing the elements of
|
|
196
|
+
bounded height of number fields
|
|
197
|
+
|
|
198
|
+
OUTPUT: list of rational points of a affine scheme
|
|
199
|
+
|
|
200
|
+
.. WARNING::
|
|
201
|
+
|
|
202
|
+
For numerically inexact fields such as ComplexField or RealField the
|
|
203
|
+
list of points returned is very likely to be incomplete. It may also
|
|
204
|
+
contain repeated points due to tolerance.
|
|
205
|
+
|
|
206
|
+
EXAMPLES: The bug reported at #11526 is fixed::
|
|
207
|
+
|
|
208
|
+
sage: A2 = AffineSpace(ZZ, 2)
|
|
209
|
+
sage: F = GF(3)
|
|
210
|
+
sage: A2(F).points()
|
|
211
|
+
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
|
|
212
|
+
|
|
213
|
+
::
|
|
214
|
+
|
|
215
|
+
sage: A.<x,y> = ZZ[]
|
|
216
|
+
sage: I = A.ideal(x^2 - y^2 - 1)
|
|
217
|
+
sage: V = AffineSpace(ZZ, 2)
|
|
218
|
+
sage: X = V.subscheme(I)
|
|
219
|
+
sage: M = X(ZZ)
|
|
220
|
+
sage: M.points(bound=1)
|
|
221
|
+
[(-1, 0), (1, 0)]
|
|
222
|
+
|
|
223
|
+
::
|
|
224
|
+
|
|
225
|
+
sage: u = QQ['u'].0
|
|
226
|
+
sage: K.<v> = NumberField(u^2 + 3) # needs sage.rings.number_field
|
|
227
|
+
sage: A.<x,y> = AffineSpace(K, 2) # needs sage.rings.number_field
|
|
228
|
+
sage: len(A(K).points(bound=2)) # needs sage.geometry.polyhedron sage.rings.number_field
|
|
229
|
+
1849
|
|
230
|
+
|
|
231
|
+
::
|
|
232
|
+
|
|
233
|
+
sage: A.<x,y> = AffineSpace(QQ, 2)
|
|
234
|
+
sage: E = A.subscheme([x^2 + y^2 - 1, y^2 - x^3 + x^2 + x - 1])
|
|
235
|
+
sage: E(A.base_ring()).points() # needs sage.libs.singular
|
|
236
|
+
[(-1, 0), (0, -1), (0, 1), (1, 0)]
|
|
237
|
+
|
|
238
|
+
::
|
|
239
|
+
|
|
240
|
+
sage: A.<x,y> = AffineSpace(CC, 2) # needs sage.rings.real_mpfr
|
|
241
|
+
sage: E = A.subscheme([y^3 - x^3 - x^2, x*y])
|
|
242
|
+
sage: E(A.base_ring()).points() # needs sage.libs.singular sage.rings.real_mpfr
|
|
243
|
+
verbose 0 (...: affine_homset.py, points)
|
|
244
|
+
Warning: computations in the numerical fields are inexact;points
|
|
245
|
+
may be computed partially or incorrectly.
|
|
246
|
+
[(-1.00000000000000, 0.000000000000000),
|
|
247
|
+
(0.000000000000000, 0.000000000000000)]
|
|
248
|
+
|
|
249
|
+
::
|
|
250
|
+
|
|
251
|
+
sage: A.<x1,x2> = AffineSpace(CDF, 2) # needs sage.rings.complex_double
|
|
252
|
+
sage: E = A.subscheme([x1^2 + x2^2 + x1*x2, x1 + x2]) # needs sage.libs.singular sage.rings.complex_double
|
|
253
|
+
sage: E(A.base_ring()).points() # needs sage.libs.singular sage.rings.complex_double
|
|
254
|
+
verbose 0 (...: affine_homset.py, points)
|
|
255
|
+
Warning: computations in the numerical fields are inexact;points
|
|
256
|
+
may be computed partially or incorrectly.
|
|
257
|
+
[(0.0, 0.0)]
|
|
258
|
+
"""
|
|
259
|
+
from sage.schemes.affine.affine_space import AffineSpace_generic
|
|
260
|
+
|
|
261
|
+
X = self.codomain()
|
|
262
|
+
if not isinstance(X, AffineSpace_generic) and X.base_ring() in Fields():
|
|
263
|
+
if hasattr(X.base_ring(), 'precision'):
|
|
264
|
+
numerical = True
|
|
265
|
+
verbose("Warning: computations in the numerical fields are inexact;points may be computed partially or incorrectly.", level=0)
|
|
266
|
+
from sage.rings.real_mpfr import RR
|
|
267
|
+
zero_tol = RR(kwds.pop('zero_tolerance', 10**(-10)))
|
|
268
|
+
if zero_tol <= 0:
|
|
269
|
+
raise ValueError("tolerance must be positive")
|
|
270
|
+
else:
|
|
271
|
+
numerical = False
|
|
272
|
+
# Then X must be a subscheme
|
|
273
|
+
dim_ideal = X.defining_ideal().dimension()
|
|
274
|
+
if dim_ideal < 0: # no points
|
|
275
|
+
return []
|
|
276
|
+
if dim_ideal == 0: # if X zero-dimensional
|
|
277
|
+
rat_points = []
|
|
278
|
+
AS = X.ambient_space()
|
|
279
|
+
N = AS.dimension_relative()
|
|
280
|
+
BR = X.base_ring()
|
|
281
|
+
# need a lexicographic ordering for elimination
|
|
282
|
+
R = PolynomialRing(BR, N, AS.gens(), order='lex')
|
|
283
|
+
I = R.ideal(X.defining_polynomials())
|
|
284
|
+
I0 = R.ideal(0)
|
|
285
|
+
# Determine the points through elimination
|
|
286
|
+
# This is much faster than using the I.variety() function on each affine chart.
|
|
287
|
+
G = I.groebner_basis()
|
|
288
|
+
if G != [1]:
|
|
289
|
+
P = {}
|
|
290
|
+
points = [P]
|
|
291
|
+
# work backwards from solving each equation for the possible
|
|
292
|
+
# values of the next coordinate
|
|
293
|
+
for i in range(len(G) - 1, -1, -1):
|
|
294
|
+
new_points = []
|
|
295
|
+
good = 0
|
|
296
|
+
for P in points:
|
|
297
|
+
# substitute in our dictionary entry that has the values
|
|
298
|
+
# of coordinates known so far. This results in a single
|
|
299
|
+
# variable polynomial (by elimination)
|
|
300
|
+
L = G[i].substitute(P)
|
|
301
|
+
if R(L).degree() > 0:
|
|
302
|
+
if numerical:
|
|
303
|
+
for pol in L.univariate_polynomial().roots(multiplicities=False):
|
|
304
|
+
r = L.variables()[0]
|
|
305
|
+
varindex = R.gens().index(r)
|
|
306
|
+
P.update({R.gen(varindex): pol})
|
|
307
|
+
new_points.append(copy(P))
|
|
308
|
+
good = 1
|
|
309
|
+
else:
|
|
310
|
+
L = L.factor()
|
|
311
|
+
# the linear factors give the possible rational values of
|
|
312
|
+
# this coordinate
|
|
313
|
+
for pol, pow in L:
|
|
314
|
+
if pol.degree() == 1 and len(pol.variables()) == 1:
|
|
315
|
+
good = 1
|
|
316
|
+
r = pol.variables()[0]
|
|
317
|
+
varindex = R.gens().index(r)
|
|
318
|
+
# add this coordinates information to
|
|
319
|
+
# each dictionary entry
|
|
320
|
+
P.update({R.gen(varindex):
|
|
321
|
+
-pol.constant_coefficient() / pol.monomial_coefficient(r)})
|
|
322
|
+
new_points.append(copy(P))
|
|
323
|
+
else:
|
|
324
|
+
new_points.append(P)
|
|
325
|
+
good = 1
|
|
326
|
+
if good:
|
|
327
|
+
points = new_points
|
|
328
|
+
# the dictionary entries now have values for all coordinates
|
|
329
|
+
# they are the rational solutions to the equations
|
|
330
|
+
# make them into affine points
|
|
331
|
+
for i in range(len(points)):
|
|
332
|
+
if numerical:
|
|
333
|
+
if len(points[i]) == N:
|
|
334
|
+
S = AS([points[i][R.gen(j)] for j in range(N)])
|
|
335
|
+
if all(g(list(S)) < zero_tol for g in X.defining_polynomials()):
|
|
336
|
+
rat_points.append(S)
|
|
337
|
+
else:
|
|
338
|
+
if len(points[i]) == N and I.subs(points[i]) == I0:
|
|
339
|
+
S = X([points[i][R.gen(j)] for j in range(N)])
|
|
340
|
+
rat_points.append(S)
|
|
341
|
+
|
|
342
|
+
rat_points = sorted(rat_points)
|
|
343
|
+
return rat_points
|
|
344
|
+
R = self.value_ring()
|
|
345
|
+
B = kwds.pop('bound', 0)
|
|
346
|
+
tol = kwds.pop('tolerance', 1e-2)
|
|
347
|
+
prec = kwds.pop('precision', 53)
|
|
348
|
+
if isinstance(R, RationalField) or R == ZZ:
|
|
349
|
+
if not B > 0:
|
|
350
|
+
raise TypeError("a positive bound B (= %s) must be specified" % B)
|
|
351
|
+
from sage.schemes.affine.affine_rational_point import enum_affine_rational_field
|
|
352
|
+
return enum_affine_rational_field(self, B)
|
|
353
|
+
if R in NumberFields():
|
|
354
|
+
if not B > 0:
|
|
355
|
+
raise TypeError("a positive bound B (= %s) must be specified" % B)
|
|
356
|
+
from sage.schemes.affine.affine_rational_point import enum_affine_number_field
|
|
357
|
+
return enum_affine_number_field(self, bound=B, tolerance=tol, precision=prec)
|
|
358
|
+
elif isinstance(R, FiniteField):
|
|
359
|
+
from sage.schemes.affine.affine_rational_point import enum_affine_finite_field
|
|
360
|
+
return enum_affine_finite_field(self)
|
|
361
|
+
else:
|
|
362
|
+
raise TypeError("unable to enumerate points over %s" % R)
|
|
363
|
+
|
|
364
|
+
def numerical_points(self, F=None, **kwds):
|
|
365
|
+
"""
|
|
366
|
+
Return some or all numerical approximations of rational points of an affine scheme.
|
|
367
|
+
|
|
368
|
+
This is for dimension 0 subschemes only and the points are determined
|
|
369
|
+
through a groebner calculation over the base ring and then numerically
|
|
370
|
+
approximating the roots of the resulting polynomials. If the base ring
|
|
371
|
+
is a number field, the embedding into ``F`` must be known.
|
|
372
|
+
|
|
373
|
+
INPUT:
|
|
374
|
+
|
|
375
|
+
- ``F`` -- numerical ring
|
|
376
|
+
|
|
377
|
+
kwds:
|
|
378
|
+
|
|
379
|
+
- ``zero_tolerance`` -- positive real number (default: 10^(-10)).
|
|
380
|
+
For numerically inexact fields, points are on the subscheme if they
|
|
381
|
+
satisfy the equations to within tolerance.
|
|
382
|
+
|
|
383
|
+
OUTPUT: list of points in the ambient space
|
|
384
|
+
|
|
385
|
+
.. WARNING::
|
|
386
|
+
|
|
387
|
+
For numerically inexact fields the list of points returned may contain repeated
|
|
388
|
+
or be missing points due to tolerance.
|
|
389
|
+
|
|
390
|
+
EXAMPLES::
|
|
391
|
+
|
|
392
|
+
sage: # needs sage.libs.singular sage.rings.number_field
|
|
393
|
+
sage: K.<v> = QuadraticField(3)
|
|
394
|
+
sage: A.<x,y> = AffineSpace(K, 2)
|
|
395
|
+
sage: X = A.subscheme([x^3 - v^2*y, y - v*x^2 + 3])
|
|
396
|
+
sage: L = X(K).numerical_points(F=RR); L # abs tol 1e-14
|
|
397
|
+
[(-1.18738247880014, -0.558021142104134),
|
|
398
|
+
(1.57693558184861, 1.30713548084184),
|
|
399
|
+
(4.80659931965815, 37.0162574656220)]
|
|
400
|
+
sage: L[0].codomain()
|
|
401
|
+
Affine Space of dimension 2 over Real Field with 53 bits of precision
|
|
402
|
+
|
|
403
|
+
::
|
|
404
|
+
|
|
405
|
+
sage: A.<x,y> = AffineSpace(QQ, 2)
|
|
406
|
+
sage: X = A.subscheme([y^2 - x^2 - 3*x, x^2 - 10*y])
|
|
407
|
+
sage: len(X(QQ).numerical_points(F=ComplexField(100))) # needs sage.libs.singular
|
|
408
|
+
4
|
|
409
|
+
|
|
410
|
+
::
|
|
411
|
+
|
|
412
|
+
sage: A.<x1, x2> = AffineSpace(QQ, 2)
|
|
413
|
+
sage: E = A.subscheme([30*x1^100 + 1000*x2^2 + 2000*x1*x2 + 1, x1 + x2])
|
|
414
|
+
sage: len(E(A.base_ring()).numerical_points(F=CDF, zero_tolerance=1e-9)) # needs sage.libs.singular
|
|
415
|
+
100
|
|
416
|
+
|
|
417
|
+
TESTS::
|
|
418
|
+
|
|
419
|
+
sage: A.<x,y> = AffineSpace(QQ, 2)
|
|
420
|
+
sage: X = A.subscheme([y^2 - x^2 - 3*x, x^2 - 10*y])
|
|
421
|
+
sage: X(QQ).numerical_points(F=QQ)
|
|
422
|
+
Traceback (most recent call last):
|
|
423
|
+
...
|
|
424
|
+
TypeError: F must be a numerical field
|
|
425
|
+
|
|
426
|
+
::
|
|
427
|
+
|
|
428
|
+
sage: A.<x,y> = AffineSpace(QQ, 2)
|
|
429
|
+
sage: X = A.subscheme([y^2 - x^2 - 3*x, x^2 - 10*y])
|
|
430
|
+
sage: X(QQ).numerical_points(F=CC, zero_tolerance=-1) # needs sage.libs.singular
|
|
431
|
+
Traceback (most recent call last):
|
|
432
|
+
...
|
|
433
|
+
ValueError: tolerance must be positive
|
|
434
|
+
"""
|
|
435
|
+
from sage.schemes.affine.affine_space import AffineSpace_generic
|
|
436
|
+
if F is None:
|
|
437
|
+
from sage.rings.cc import CC as F
|
|
438
|
+
if F not in Fields() or not hasattr(F, 'precision'):
|
|
439
|
+
raise TypeError('F must be a numerical field')
|
|
440
|
+
X = self.codomain()
|
|
441
|
+
if X.base_ring() not in NumberFields():
|
|
442
|
+
raise TypeError('base ring must be a number field')
|
|
443
|
+
|
|
444
|
+
AA = X.ambient_space().change_ring(F)
|
|
445
|
+
if not isinstance(X, AffineSpace_generic) and X.base_ring() in Fields():
|
|
446
|
+
# Then X must be a subscheme
|
|
447
|
+
dim_ideal = X.defining_ideal().dimension()
|
|
448
|
+
if dim_ideal != 0: # no points
|
|
449
|
+
return []
|
|
450
|
+
else:
|
|
451
|
+
return []
|
|
452
|
+
|
|
453
|
+
# if X zero-dimensional
|
|
454
|
+
from sage.rings.real_mpfr import RR
|
|
455
|
+
zero_tol = RR(kwds.pop('zero_tolerance', 10**(-10)))
|
|
456
|
+
if zero_tol <= 0:
|
|
457
|
+
raise ValueError("tolerance must be positive")
|
|
458
|
+
rat_points = []
|
|
459
|
+
PS = X.ambient_space()
|
|
460
|
+
N = PS.dimension_relative()
|
|
461
|
+
BR = X.base_ring()
|
|
462
|
+
# need a lexicographic ordering for elimination
|
|
463
|
+
R = PolynomialRing(BR, N, PS.gens(), order='lex')
|
|
464
|
+
RF = R.change_ring(F)
|
|
465
|
+
I = R.ideal(X.defining_polynomials())
|
|
466
|
+
# Determine the points through elimination This is much faster
|
|
467
|
+
# than using the I.variety() function on each affine chart.
|
|
468
|
+
G = I.groebner_basis()
|
|
469
|
+
G = [RF(g) for g in G]
|
|
470
|
+
if G != [1]:
|
|
471
|
+
P = {}
|
|
472
|
+
points = [P]
|
|
473
|
+
# work backwards from solving each equation for the possible
|
|
474
|
+
# values of the next coordinate
|
|
475
|
+
for g in reversed(G):
|
|
476
|
+
new_points = []
|
|
477
|
+
good = False
|
|
478
|
+
for P in points:
|
|
479
|
+
# substitute in our dictionary entry that has the
|
|
480
|
+
# values of coordinates known so far. This results
|
|
481
|
+
# in a single variable polynomial (by elimination)
|
|
482
|
+
L = g.substitute(P)
|
|
483
|
+
if len(RF(L).variables()) == 1:
|
|
484
|
+
r = L.variables()[0]
|
|
485
|
+
var = RF.gen(RF.gens().index(r))
|
|
486
|
+
|
|
487
|
+
for pol in L.univariate_polynomial().roots(ring=F,
|
|
488
|
+
multiplicities=False):
|
|
489
|
+
P[var] = pol
|
|
490
|
+
new_points.append(copy(P))
|
|
491
|
+
good = True
|
|
492
|
+
else:
|
|
493
|
+
new_points.append(P)
|
|
494
|
+
good = True
|
|
495
|
+
if good:
|
|
496
|
+
points = new_points
|
|
497
|
+
# the dictionary entries now have values for all
|
|
498
|
+
# coordinates they are the rational solutions to the
|
|
499
|
+
# equations make them into affine points
|
|
500
|
+
polys = [g.change_ring(F) for g in X.defining_polynomials()]
|
|
501
|
+
for P in points:
|
|
502
|
+
if len(P) == N:
|
|
503
|
+
S = AA([P[R.gen(j)] for j in range(N)])
|
|
504
|
+
if all(g(list(S)) < zero_tol for g in polys):
|
|
505
|
+
rat_points.append(S)
|
|
506
|
+
|
|
507
|
+
rat_points = sorted(rat_points)
|
|
508
|
+
return rat_points
|