passagemath-pari 10.6.30__cp310-cp310-macosx_13_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of passagemath-pari might be problematic. Click here for more details.
- PARIKernel/.dylibs/libcrypto.3.dylib +0 -0
- PARIKernel/.dylibs/libflint.21.0.dylib +0 -0
- PARIKernel/.dylibs/libgf2x.3.dylib +0 -0
- PARIKernel/.dylibs/libgfortran.5.dylib +0 -0
- PARIKernel/.dylibs/libgivaro.9.dylib +0 -0
- PARIKernel/.dylibs/libgmp.10.dylib +0 -0
- PARIKernel/.dylibs/libgmpxx.4.dylib +0 -0
- PARIKernel/.dylibs/libgsl.28.dylib +0 -0
- PARIKernel/.dylibs/libmpfr.6.dylib +0 -0
- PARIKernel/.dylibs/libntl.44.dylib +0 -0
- PARIKernel/.dylibs/libopenblasp-r0.3.29.dylib +0 -0
- PARIKernel/.dylibs/libpari-gmp-tls.dylib +0 -0
- PARIKernel/.dylibs/libquadmath.0.dylib +0 -0
- PARIKernel/.dylibs/libreadline.8.2.dylib +0 -0
- PARIKernel/.dylibs/libxeus-zmq.6.0.1.dylib +0 -0
- PARIKernel/.dylibs/libxeus.13.1.0.dylib +0 -0
- PARIKernel/.dylibs/libzmq.5.dylib +0 -0
- PARIKernel/__init__.py +2 -0
- PARIKernel/__main__.py +5 -0
- PARIKernel/io.cpython-310-darwin.so +0 -0
- PARIKernel/io.pxd +7 -0
- PARIKernel/io.pyx +84 -0
- PARIKernel/kernel.cpython-310-darwin.so +0 -0
- PARIKernel/kernel.pyx +260 -0
- PARIKernel/paridecl.pxd +95 -0
- PARIKernel/svg.cpython-310-darwin.so +0 -0
- PARIKernel/svg.pyx +52 -0
- cypari2/__init__.py +8 -0
- cypari2/auto_paridecl.pxd +1070 -0
- cypari2/closure.cpython-310-darwin.so +0 -0
- cypari2/closure.pxd +5 -0
- cypari2/closure.pyx +246 -0
- cypari2/convert.cpython-310-darwin.so +0 -0
- cypari2/convert.pxd +80 -0
- cypari2/convert.pyx +613 -0
- cypari2/custom_block.cpython-310-darwin.so +0 -0
- cypari2/custom_block.pyx +30 -0
- cypari2/cypari.h +13 -0
- cypari2/gen.cpython-310-darwin.so +0 -0
- cypari2/gen.pxd +69 -0
- cypari2/gen.pyx +4819 -0
- cypari2/handle_error.cpython-310-darwin.so +0 -0
- cypari2/handle_error.pxd +7 -0
- cypari2/handle_error.pyx +232 -0
- cypari2/pari_instance.cpython-310-darwin.so +0 -0
- cypari2/pari_instance.pxd +27 -0
- cypari2/pari_instance.pyx +1438 -0
- cypari2/paridecl.pxd +5353 -0
- cypari2/paripriv.pxd +34 -0
- cypari2/pycore_long.h +98 -0
- cypari2/pycore_long.pxd +9 -0
- cypari2/stack.cpython-310-darwin.so +0 -0
- cypari2/stack.pxd +27 -0
- cypari2/stack.pyx +278 -0
- cypari2/string_utils.cpython-310-darwin.so +0 -0
- cypari2/string_utils.pxd +29 -0
- cypari2/string_utils.pyx +65 -0
- cypari2/types.pxd +147 -0
- passagemath_pari-10.6.30.data/data/etc/jupyter/nbconfig/notebook.d/gp-mode.json +5 -0
- passagemath_pari-10.6.30.data/data/share/jupyter/kernels/pari_jupyter/kernel.js +28 -0
- passagemath_pari-10.6.30.data/data/share/jupyter/kernels/pari_jupyter/kernel.json +6 -0
- passagemath_pari-10.6.30.data/data/share/jupyter/kernels/pari_jupyter/logo-64x64.png +0 -0
- passagemath_pari-10.6.30.data/data/share/jupyter/kernels/xeus-gp/kernel.json +13 -0
- passagemath_pari-10.6.30.data/data/share/jupyter/kernels/xeus-gp/logo-32x32.png +0 -0
- passagemath_pari-10.6.30.data/data/share/jupyter/kernels/xeus-gp/logo-64x64.png +0 -0
- passagemath_pari-10.6.30.data/data/share/jupyter/kernels/xeus-gp/logo-svg.svg +75 -0
- passagemath_pari-10.6.30.data/data/share/jupyter/nbextensions/gp-mode/gp.js +284 -0
- passagemath_pari-10.6.30.data/data/share/jupyter/nbextensions/gp-mode/main.js +15 -0
- passagemath_pari-10.6.30.dist-info/METADATA +208 -0
- passagemath_pari-10.6.30.dist-info/RECORD +327 -0
- passagemath_pari-10.6.30.dist-info/WHEEL +6 -0
- passagemath_pari-10.6.30.dist-info/top_level.txt +4 -0
- sage/all__sagemath_pari.py +26 -0
- sage/databases/all__sagemath_pari.py +7 -0
- sage/databases/conway.py +274 -0
- sage/ext/all__sagemath_pari.py +1 -0
- sage/ext/memory.cpython-310-darwin.so +0 -0
- sage/ext/memory.pyx +98 -0
- sage/ext_data/pari/buzzard/DimensionSk.g +286 -0
- sage/ext_data/pari/buzzard/Tpprog.g +179 -0
- sage/ext_data/pari/buzzard/genusn.g +129 -0
- sage/ext_data/pari/dokchitser/computel.gp +740 -0
- sage/ext_data/pari/dokchitser/computel.gp.template +740 -0
- sage/ext_data/pari/dokchitser/ex-bsw +43 -0
- sage/ext_data/pari/dokchitser/ex-chgen +48 -0
- sage/ext_data/pari/dokchitser/ex-chqua +37 -0
- sage/ext_data/pari/dokchitser/ex-delta +35 -0
- sage/ext_data/pari/dokchitser/ex-eisen +30 -0
- sage/ext_data/pari/dokchitser/ex-gen2 +38 -0
- sage/ext_data/pari/dokchitser/ex-gen3 +49 -0
- sage/ext_data/pari/dokchitser/ex-gen4 +54 -0
- sage/ext_data/pari/dokchitser/ex-nf +48 -0
- sage/ext_data/pari/dokchitser/ex-shin +50 -0
- sage/ext_data/pari/dokchitser/ex-tau2 +30 -0
- sage/ext_data/pari/dokchitser/ex-zeta +27 -0
- sage/ext_data/pari/dokchitser/ex-zeta2 +47 -0
- sage/ext_data/pari/dokchitser/testall +13 -0
- sage/ext_data/pari/simon/ell.gp +2129 -0
- sage/ext_data/pari/simon/ellQ.gp +2151 -0
- sage/ext_data/pari/simon/ellcommon.gp +126 -0
- sage/ext_data/pari/simon/qfsolve.gp +722 -0
- sage/ext_data/pari/simon/resultant3.gp +306 -0
- sage/groups/all__sagemath_pari.py +3 -0
- sage/groups/pari_group.py +175 -0
- sage/interfaces/all__sagemath_pari.py +1 -0
- sage/interfaces/genus2reduction.py +464 -0
- sage/interfaces/gp.py +1114 -0
- sage/libs/all__sagemath_pari.py +2 -0
- sage/libs/linkages/__init__.py +1 -0
- sage/libs/linkages/padics/API.pxi +617 -0
- sage/libs/linkages/padics/Polynomial_ram.pxi +388 -0
- sage/libs/linkages/padics/Polynomial_shared.pxi +554 -0
- sage/libs/linkages/padics/__init__.py +1 -0
- sage/libs/linkages/padics/fmpz_poly_unram.pxi +869 -0
- sage/libs/linkages/padics/mpz.pxi +691 -0
- sage/libs/linkages/padics/relaxed/API.pxi +518 -0
- sage/libs/linkages/padics/relaxed/__init__.py +1 -0
- sage/libs/linkages/padics/relaxed/flint.pxi +543 -0
- sage/libs/linkages/padics/unram_shared.pxi +247 -0
- sage/libs/pari/__init__.py +210 -0
- sage/libs/pari/all.py +5 -0
- sage/libs/pari/convert_flint.cpython-310-darwin.so +0 -0
- sage/libs/pari/convert_flint.pxd +14 -0
- sage/libs/pari/convert_flint.pyx +159 -0
- sage/libs/pari/convert_gmp.cpython-310-darwin.so +0 -0
- sage/libs/pari/convert_gmp.pxd +14 -0
- sage/libs/pari/convert_gmp.pyx +210 -0
- sage/libs/pari/convert_sage.cpython-310-darwin.so +0 -0
- sage/libs/pari/convert_sage.pxd +16 -0
- sage/libs/pari/convert_sage.pyx +588 -0
- sage/libs/pari/convert_sage_complex_double.cpython-310-darwin.so +0 -0
- sage/libs/pari/convert_sage_complex_double.pxd +14 -0
- sage/libs/pari/convert_sage_complex_double.pyx +132 -0
- sage/libs/pari/convert_sage_matrix.cpython-310-darwin.so +0 -0
- sage/libs/pari/convert_sage_matrix.pyx +106 -0
- sage/libs/pari/convert_sage_real_double.cpython-310-darwin.so +0 -0
- sage/libs/pari/convert_sage_real_double.pxd +5 -0
- sage/libs/pari/convert_sage_real_double.pyx +14 -0
- sage/libs/pari/convert_sage_real_mpfr.cpython-310-darwin.so +0 -0
- sage/libs/pari/convert_sage_real_mpfr.pxd +7 -0
- sage/libs/pari/convert_sage_real_mpfr.pyx +108 -0
- sage/libs/pari/misc.cpython-310-darwin.so +0 -0
- sage/libs/pari/misc.pxd +4 -0
- sage/libs/pari/misc.pyx +26 -0
- sage/libs/pari/tests.py +1848 -0
- sage/matrix/all__sagemath_pari.py +1 -0
- sage/matrix/matrix_integer_pari.cpython-310-darwin.so +0 -0
- sage/matrix/matrix_integer_pari.pyx +187 -0
- sage/matrix/matrix_rational_pari.cpython-310-darwin.so +0 -0
- sage/matrix/matrix_rational_pari.pyx +160 -0
- sage/quadratic_forms/all__sagemath_pari.py +10 -0
- sage/quadratic_forms/genera/all.py +9 -0
- sage/quadratic_forms/genera/genus.py +3506 -0
- sage/quadratic_forms/genera/normal_form.py +1519 -0
- sage/quadratic_forms/genera/spinor_genus.py +243 -0
- sage/quadratic_forms/qfsolve.py +255 -0
- sage/quadratic_forms/quadratic_form__automorphisms.py +427 -0
- sage/quadratic_forms/quadratic_form__genus.py +141 -0
- sage/quadratic_forms/quadratic_form__local_density_interfaces.py +140 -0
- sage/quadratic_forms/quadratic_form__local_normal_form.py +421 -0
- sage/quadratic_forms/quadratic_form__local_representation_conditions.py +889 -0
- sage/quadratic_forms/quadratic_form__mass.py +69 -0
- sage/quadratic_forms/quadratic_form__mass__Conway_Sloane_masses.py +663 -0
- sage/quadratic_forms/quadratic_form__mass__Siegel_densities.py +373 -0
- sage/quadratic_forms/quadratic_form__siegel_product.py +198 -0
- sage/quadratic_forms/special_values.py +323 -0
- sage/rings/all__sagemath_pari.py +15 -0
- sage/rings/factorint_pari.cpython-310-darwin.so +0 -0
- sage/rings/factorint_pari.pyx +80 -0
- sage/rings/finite_rings/all__sagemath_pari.py +1 -0
- sage/rings/finite_rings/element_givaro.cpython-310-darwin.so +0 -0
- sage/rings/finite_rings/element_givaro.pxd +91 -0
- sage/rings/finite_rings/element_givaro.pyx +1769 -0
- sage/rings/finite_rings/element_ntl_gf2e.cpython-310-darwin.so +0 -0
- sage/rings/finite_rings/element_ntl_gf2e.pxd +22 -0
- sage/rings/finite_rings/element_ntl_gf2e.pyx +1333 -0
- sage/rings/finite_rings/element_pari_ffelt.cpython-310-darwin.so +0 -0
- sage/rings/finite_rings/element_pari_ffelt.pxd +13 -0
- sage/rings/finite_rings/element_pari_ffelt.pyx +1441 -0
- sage/rings/finite_rings/finite_field_givaro.py +612 -0
- sage/rings/finite_rings/finite_field_pari_ffelt.py +238 -0
- sage/rings/finite_rings/hom_finite_field_givaro.cpython-310-darwin.so +0 -0
- sage/rings/finite_rings/hom_finite_field_givaro.pxd +28 -0
- sage/rings/finite_rings/hom_finite_field_givaro.pyx +280 -0
- sage/rings/finite_rings/residue_field_givaro.cpython-310-darwin.so +0 -0
- sage/rings/finite_rings/residue_field_givaro.pyx +133 -0
- sage/rings/finite_rings/residue_field_pari_ffelt.cpython-310-darwin.so +0 -0
- sage/rings/finite_rings/residue_field_pari_ffelt.pyx +128 -0
- sage/rings/function_field/all__sagemath_pari.py +1 -0
- sage/rings/function_field/valuation.py +1450 -0
- sage/rings/function_field/valuation_ring.py +212 -0
- sage/rings/number_field/all__sagemath_pari.py +14 -0
- sage/rings/number_field/totallyreal.cpython-310-darwin.so +0 -0
- sage/rings/number_field/totallyreal.pyx +509 -0
- sage/rings/number_field/totallyreal_data.cpython-310-darwin.so +0 -0
- sage/rings/number_field/totallyreal_data.pxd +26 -0
- sage/rings/number_field/totallyreal_data.pyx +928 -0
- sage/rings/number_field/totallyreal_phc.py +144 -0
- sage/rings/number_field/totallyreal_rel.py +1018 -0
- sage/rings/padics/CA_template.pxi +1847 -0
- sage/rings/padics/CA_template_header.pxi +50 -0
- sage/rings/padics/CR_template.pxi +2563 -0
- sage/rings/padics/CR_template_header.pxi +57 -0
- sage/rings/padics/FM_template.pxi +1575 -0
- sage/rings/padics/FM_template_header.pxi +50 -0
- sage/rings/padics/FP_template.pxi +2176 -0
- sage/rings/padics/FP_template_header.pxi +57 -0
- sage/rings/padics/all.py +3 -0
- sage/rings/padics/all__sagemath_pari.py +11 -0
- sage/rings/padics/common_conversion.cpython-310-darwin.so +0 -0
- sage/rings/padics/common_conversion.pxd +15 -0
- sage/rings/padics/common_conversion.pyx +508 -0
- sage/rings/padics/eisenstein_extension_generic.py +232 -0
- sage/rings/padics/factory.py +3623 -0
- sage/rings/padics/generic_nodes.py +1615 -0
- sage/rings/padics/lattice_precision.py +2889 -0
- sage/rings/padics/morphism.cpython-310-darwin.so +0 -0
- sage/rings/padics/morphism.pxd +11 -0
- sage/rings/padics/morphism.pyx +366 -0
- sage/rings/padics/padic_base_generic.py +467 -0
- sage/rings/padics/padic_base_leaves.py +1235 -0
- sage/rings/padics/padic_capped_absolute_element.cpython-310-darwin.so +0 -0
- sage/rings/padics/padic_capped_absolute_element.pxd +15 -0
- sage/rings/padics/padic_capped_absolute_element.pyx +520 -0
- sage/rings/padics/padic_capped_relative_element.cpython-310-darwin.so +0 -0
- sage/rings/padics/padic_capped_relative_element.pxd +14 -0
- sage/rings/padics/padic_capped_relative_element.pyx +614 -0
- sage/rings/padics/padic_extension_generic.py +990 -0
- sage/rings/padics/padic_extension_leaves.py +738 -0
- sage/rings/padics/padic_fixed_mod_element.cpython-310-darwin.so +0 -0
- sage/rings/padics/padic_fixed_mod_element.pxd +15 -0
- sage/rings/padics/padic_fixed_mod_element.pyx +584 -0
- sage/rings/padics/padic_floating_point_element.cpython-310-darwin.so +0 -0
- sage/rings/padics/padic_floating_point_element.pxd +14 -0
- sage/rings/padics/padic_floating_point_element.pyx +447 -0
- sage/rings/padics/padic_generic_element.cpython-310-darwin.so +0 -0
- sage/rings/padics/padic_generic_element.pxd +48 -0
- sage/rings/padics/padic_generic_element.pyx +4642 -0
- sage/rings/padics/padic_lattice_element.py +1342 -0
- sage/rings/padics/padic_printing.cpython-310-darwin.so +0 -0
- sage/rings/padics/padic_printing.pxd +38 -0
- sage/rings/padics/padic_printing.pyx +1505 -0
- sage/rings/padics/padic_relaxed_element.cpython-310-darwin.so +0 -0
- sage/rings/padics/padic_relaxed_element.pxd +56 -0
- sage/rings/padics/padic_relaxed_element.pyx +18 -0
- sage/rings/padics/padic_relaxed_errors.cpython-310-darwin.so +0 -0
- sage/rings/padics/padic_relaxed_errors.pxd +11 -0
- sage/rings/padics/padic_relaxed_errors.pyx +71 -0
- sage/rings/padics/padic_template_element.pxi +1212 -0
- sage/rings/padics/padic_template_element_header.pxi +50 -0
- sage/rings/padics/padic_valuation.py +1423 -0
- sage/rings/padics/pow_computer_flint.cpython-310-darwin.so +0 -0
- sage/rings/padics/pow_computer_flint.pxd +38 -0
- sage/rings/padics/pow_computer_flint.pyx +641 -0
- sage/rings/padics/pow_computer_relative.cpython-310-darwin.so +0 -0
- sage/rings/padics/pow_computer_relative.pxd +29 -0
- sage/rings/padics/pow_computer_relative.pyx +415 -0
- sage/rings/padics/qadic_flint_CA.cpython-310-darwin.so +0 -0
- sage/rings/padics/qadic_flint_CA.pxd +21 -0
- sage/rings/padics/qadic_flint_CA.pyx +130 -0
- sage/rings/padics/qadic_flint_CR.cpython-310-darwin.so +0 -0
- sage/rings/padics/qadic_flint_CR.pxd +13 -0
- sage/rings/padics/qadic_flint_CR.pyx +172 -0
- sage/rings/padics/qadic_flint_FM.cpython-310-darwin.so +0 -0
- sage/rings/padics/qadic_flint_FM.pxd +14 -0
- sage/rings/padics/qadic_flint_FM.pyx +111 -0
- sage/rings/padics/qadic_flint_FP.cpython-310-darwin.so +0 -0
- sage/rings/padics/qadic_flint_FP.pxd +12 -0
- sage/rings/padics/qadic_flint_FP.pyx +165 -0
- sage/rings/padics/relative_extension_leaves.py +429 -0
- sage/rings/padics/relative_ramified_CA.cpython-310-darwin.so +0 -0
- sage/rings/padics/relative_ramified_CA.pxd +9 -0
- sage/rings/padics/relative_ramified_CA.pyx +33 -0
- sage/rings/padics/relative_ramified_CR.cpython-310-darwin.so +0 -0
- sage/rings/padics/relative_ramified_CR.pxd +8 -0
- sage/rings/padics/relative_ramified_CR.pyx +33 -0
- sage/rings/padics/relative_ramified_FM.cpython-310-darwin.so +0 -0
- sage/rings/padics/relative_ramified_FM.pxd +9 -0
- sage/rings/padics/relative_ramified_FM.pyx +33 -0
- sage/rings/padics/relative_ramified_FP.cpython-310-darwin.so +0 -0
- sage/rings/padics/relative_ramified_FP.pxd +8 -0
- sage/rings/padics/relative_ramified_FP.pyx +33 -0
- sage/rings/padics/relaxed_template.pxi +4229 -0
- sage/rings/padics/relaxed_template_header.pxi +160 -0
- sage/rings/padics/tests.py +35 -0
- sage/rings/padics/tutorial.py +341 -0
- sage/rings/padics/unramified_extension_generic.py +335 -0
- sage/rings/padics/witt_vector.py +917 -0
- sage/rings/padics/witt_vector_ring.py +934 -0
- sage/rings/pari_ring.py +235 -0
- sage/rings/polynomial/all__sagemath_pari.py +1 -0
- sage/rings/polynomial/padics/all.py +1 -0
- sage/rings/polynomial/padics/polynomial_padic.py +360 -0
- sage/rings/polynomial/padics/polynomial_padic_capped_relative_dense.py +1324 -0
- sage/rings/polynomial/padics/polynomial_padic_flat.py +72 -0
- sage/rings/power_series_pari.cpython-310-darwin.so +0 -0
- sage/rings/power_series_pari.pxd +6 -0
- sage/rings/power_series_pari.pyx +934 -0
- sage/rings/tate_algebra.py +1282 -0
- sage/rings/tate_algebra_element.cpython-310-darwin.so +0 -0
- sage/rings/tate_algebra_element.pxd +49 -0
- sage/rings/tate_algebra_element.pyx +3464 -0
- sage/rings/tate_algebra_ideal.cpython-310-darwin.so +0 -0
- sage/rings/tate_algebra_ideal.pxd +7 -0
- sage/rings/tate_algebra_ideal.pyx +1307 -0
- sage/rings/valuation/all.py +7 -0
- sage/rings/valuation/augmented_valuation.py +2118 -0
- sage/rings/valuation/developing_valuation.py +362 -0
- sage/rings/valuation/gauss_valuation.py +812 -0
- sage/rings/valuation/inductive_valuation.py +1686 -0
- sage/rings/valuation/limit_valuation.py +946 -0
- sage/rings/valuation/mapped_valuation.py +656 -0
- sage/rings/valuation/scaled_valuation.py +322 -0
- sage/rings/valuation/trivial_valuation.py +382 -0
- sage/rings/valuation/valuation.py +1119 -0
- sage/rings/valuation/valuation_space.py +1615 -0
- sage/rings/valuation/valuations_catalog.py +10 -0
- sage/rings/valuation/value_group.py +697 -0
- sage/schemes/all__sagemath_pari.py +1 -0
- sage/schemes/elliptic_curves/all__sagemath_pari.py +1 -0
- sage/schemes/elliptic_curves/descent_two_isogeny_pari.cpython-310-darwin.so +0 -0
- sage/schemes/elliptic_curves/descent_two_isogeny_pari.pyx +46 -0
- sage_wheels/bin/gp +0 -0
- sage_wheels/bin/gp2c +0 -0
- sage_wheels/bin/gp2c-run +57 -0
- sage_wheels/bin/xeus-gp +0 -0
- sage_wheels/share/gp2c/func.dsc +18414 -0
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-pari
|
|
2
|
+
# sage.doctest: needs sage.rings.finite_rings
|
|
3
|
+
# sage.doctest: needs sage.rings.function_field
|
|
4
|
+
r"""
|
|
5
|
+
Valuation rings of function fields
|
|
6
|
+
|
|
7
|
+
A valuation ring of a function field is associated with a place of the
|
|
8
|
+
function field. The valuation ring consists of all elements of the function
|
|
9
|
+
field that have nonnegative valuation at the place.
|
|
10
|
+
|
|
11
|
+
EXAMPLES::
|
|
12
|
+
|
|
13
|
+
sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]
|
|
14
|
+
sage: L.<y> = K.extension(Y^2 + Y + x + 1/x)
|
|
15
|
+
sage: p = L.places_finite()[0]
|
|
16
|
+
sage: p
|
|
17
|
+
Place (x, x*y)
|
|
18
|
+
sage: R = p.valuation_ring()
|
|
19
|
+
sage: R
|
|
20
|
+
Valuation ring at Place (x, x*y)
|
|
21
|
+
sage: R.place() == p
|
|
22
|
+
True
|
|
23
|
+
|
|
24
|
+
Thus any nonzero element or its inverse of the function field lies in the
|
|
25
|
+
valuation ring, as shown in the following example::
|
|
26
|
+
|
|
27
|
+
sage: f = y/(1+y)
|
|
28
|
+
sage: f in R
|
|
29
|
+
True
|
|
30
|
+
sage: f not in R
|
|
31
|
+
False
|
|
32
|
+
sage: f.valuation(p)
|
|
33
|
+
0
|
|
34
|
+
|
|
35
|
+
The residue field at the place is defined as the quotient ring of the valuation
|
|
36
|
+
ring modulo its unique maximal ideal. The method :meth:`residue_field()` of the
|
|
37
|
+
valuation ring returns an extension field of the constant base field, isomorphic
|
|
38
|
+
to the residue field, along with lifting and evaluation homomorphisms::
|
|
39
|
+
|
|
40
|
+
sage: k,phi,psi = R.residue_field()
|
|
41
|
+
sage: k
|
|
42
|
+
Finite Field of size 2
|
|
43
|
+
sage: phi
|
|
44
|
+
Ring morphism:
|
|
45
|
+
From: Finite Field of size 2
|
|
46
|
+
To: Valuation ring at Place (x, x*y)
|
|
47
|
+
sage: psi
|
|
48
|
+
Ring morphism:
|
|
49
|
+
From: Valuation ring at Place (x, x*y)
|
|
50
|
+
To: Finite Field of size 2
|
|
51
|
+
sage: psi(f) in k
|
|
52
|
+
True
|
|
53
|
+
|
|
54
|
+
AUTHORS:
|
|
55
|
+
|
|
56
|
+
- Kwankyu Lee (2017-04-30): initial version
|
|
57
|
+
"""
|
|
58
|
+
|
|
59
|
+
# ****************************************************************************
|
|
60
|
+
# Copyright (C) 2016-2019 Kwankyu Lee <ekwankyu@gmail.com>
|
|
61
|
+
#
|
|
62
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
63
|
+
# as published by the Free Software Foundation; either version 2 of
|
|
64
|
+
# the License, or (at your option) any later version.
|
|
65
|
+
# https://www.gnu.org/licenses/
|
|
66
|
+
# ****************************************************************************
|
|
67
|
+
|
|
68
|
+
from sage.misc.cachefunc import cached_method
|
|
69
|
+
|
|
70
|
+
from sage.structure.unique_representation import UniqueRepresentation
|
|
71
|
+
from sage.structure.parent import Parent
|
|
72
|
+
|
|
73
|
+
from sage.categories.homset import Hom
|
|
74
|
+
from sage.categories.rings import Rings
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
class FunctionFieldValuationRing(UniqueRepresentation, Parent):
|
|
78
|
+
"""
|
|
79
|
+
Base class for valuation rings of function fields.
|
|
80
|
+
|
|
81
|
+
INPUT:
|
|
82
|
+
|
|
83
|
+
- ``field`` -- function field
|
|
84
|
+
|
|
85
|
+
- ``place`` -- place of the function field
|
|
86
|
+
|
|
87
|
+
EXAMPLES::
|
|
88
|
+
|
|
89
|
+
sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]
|
|
90
|
+
sage: L.<y> = K.extension(Y^2 + Y + x + 1/x)
|
|
91
|
+
sage: p = L.places_finite()[0]
|
|
92
|
+
sage: p.valuation_ring()
|
|
93
|
+
Valuation ring at Place (x, x*y)
|
|
94
|
+
"""
|
|
95
|
+
def __init__(self, field, place, category=None):
|
|
96
|
+
"""
|
|
97
|
+
Initialize.
|
|
98
|
+
|
|
99
|
+
TESTS::
|
|
100
|
+
|
|
101
|
+
sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]
|
|
102
|
+
sage: L.<y> = K.extension(Y^2 + Y + x + 1/x)
|
|
103
|
+
sage: p = L.places_finite()[0]
|
|
104
|
+
sage: R = p.valuation_ring()
|
|
105
|
+
sage: TestSuite(R).run()
|
|
106
|
+
"""
|
|
107
|
+
Parent.__init__(self, category=Rings().or_subcategory(category).Infinite(), facade=field)
|
|
108
|
+
|
|
109
|
+
self._field = field
|
|
110
|
+
self._place = place
|
|
111
|
+
|
|
112
|
+
def _element_constructor_(self, x):
|
|
113
|
+
"""
|
|
114
|
+
Construct an element of the function field belonging to the
|
|
115
|
+
valuation ring.
|
|
116
|
+
|
|
117
|
+
EXAMPLES::
|
|
118
|
+
|
|
119
|
+
sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]
|
|
120
|
+
sage: L.<y> = K.extension(Y^2 + Y + x + 1/x)
|
|
121
|
+
sage: p = L.places_finite()[0]
|
|
122
|
+
sage: R = p.valuation_ring()
|
|
123
|
+
sage: y in R
|
|
124
|
+
False
|
|
125
|
+
sage: 1/y in R
|
|
126
|
+
True
|
|
127
|
+
sage: x + y in R
|
|
128
|
+
False
|
|
129
|
+
sage: 1/(x + y) in R
|
|
130
|
+
True
|
|
131
|
+
"""
|
|
132
|
+
x = self._field(x)
|
|
133
|
+
if x.valuation(self._place) >= 0:
|
|
134
|
+
return x
|
|
135
|
+
else:
|
|
136
|
+
raise TypeError
|
|
137
|
+
|
|
138
|
+
def _repr_(self):
|
|
139
|
+
"""
|
|
140
|
+
Return the string representation of the valuation ring.
|
|
141
|
+
|
|
142
|
+
EXAMPLES::
|
|
143
|
+
|
|
144
|
+
sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]
|
|
145
|
+
sage: L.<y> = K.extension(Y^2 + Y + x + 1/x)
|
|
146
|
+
sage: p = L.places_finite()[0]
|
|
147
|
+
sage: p.valuation_ring()
|
|
148
|
+
Valuation ring at Place (x, x*y)
|
|
149
|
+
"""
|
|
150
|
+
return 'Valuation ring at {}'.format(self._place)
|
|
151
|
+
|
|
152
|
+
def place(self):
|
|
153
|
+
"""
|
|
154
|
+
Return the place associated with the valuation ring.
|
|
155
|
+
|
|
156
|
+
EXAMPLES::
|
|
157
|
+
|
|
158
|
+
sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]
|
|
159
|
+
sage: L.<y> = K.extension(Y^2 + Y + x + 1/x)
|
|
160
|
+
sage: p = L.places_finite()[0]
|
|
161
|
+
sage: R = p.valuation_ring()
|
|
162
|
+
sage: p == R.place()
|
|
163
|
+
True
|
|
164
|
+
"""
|
|
165
|
+
return self._place
|
|
166
|
+
|
|
167
|
+
@cached_method
|
|
168
|
+
def residue_field(self, name=None):
|
|
169
|
+
"""
|
|
170
|
+
Return the residue field of the valuation ring together with
|
|
171
|
+
the maps from and to it.
|
|
172
|
+
|
|
173
|
+
INPUT:
|
|
174
|
+
|
|
175
|
+
- ``name`` -- string; name of the generator of the field
|
|
176
|
+
|
|
177
|
+
OUTPUT:
|
|
178
|
+
|
|
179
|
+
- a field isomorphic to the residue field
|
|
180
|
+
|
|
181
|
+
- a ring homomorphism from the valuation ring to the field
|
|
182
|
+
|
|
183
|
+
- a ring homomorphism from the field to the valuation ring
|
|
184
|
+
|
|
185
|
+
EXAMPLES::
|
|
186
|
+
|
|
187
|
+
sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]
|
|
188
|
+
sage: L.<y> = K.extension(Y^2 + Y + x + 1/x)
|
|
189
|
+
sage: p = L.places_finite()[0]
|
|
190
|
+
sage: R = p.valuation_ring()
|
|
191
|
+
sage: k, fr_k, to_k = R.residue_field()
|
|
192
|
+
sage: k
|
|
193
|
+
Finite Field of size 2
|
|
194
|
+
sage: fr_k
|
|
195
|
+
Ring morphism:
|
|
196
|
+
From: Finite Field of size 2
|
|
197
|
+
To: Valuation ring at Place (x, x*y)
|
|
198
|
+
sage: to_k
|
|
199
|
+
Ring morphism:
|
|
200
|
+
From: Valuation ring at Place (x, x*y)
|
|
201
|
+
To: Finite Field of size 2
|
|
202
|
+
sage: to_k(1/y)
|
|
203
|
+
0
|
|
204
|
+
sage: to_k(y/(1+y))
|
|
205
|
+
1
|
|
206
|
+
"""
|
|
207
|
+
from .maps import FunctionFieldRingMorphism as morphism
|
|
208
|
+
|
|
209
|
+
k, from_k, to_k = self._place._residue_field(name=name)
|
|
210
|
+
mor_from_k = morphism(Hom(k,self), from_k)
|
|
211
|
+
mor_to_k = morphism(Hom(self,k), to_k)
|
|
212
|
+
return k, mor_from_k, mor_to_k
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-pari
|
|
2
|
+
|
|
3
|
+
from sage.misc.lazy_import import lazy_import
|
|
4
|
+
|
|
5
|
+
lazy_import('sage.rings.number_field.totallyreal', 'enumerate_totallyreal_fields_prim')
|
|
6
|
+
lazy_import('sage.rings.number_field.totallyreal_data', 'hermite_constant')
|
|
7
|
+
lazy_import('sage.rings.number_field.totallyreal_rel',
|
|
8
|
+
'enumerate_totallyreal_fields_all')
|
|
9
|
+
lazy_import('sage.rings.number_field.totallyreal_rel',
|
|
10
|
+
'enumerate_totallyreal_fields_rel')
|
|
11
|
+
|
|
12
|
+
lazy_import('sage.rings.number_field.unit_group', 'UnitGroup')
|
|
13
|
+
|
|
14
|
+
del lazy_import
|
|
Binary file
|