passagemath-modules 10.6.31__cp314-cp314-macosx_13_0_x86_64.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-modules might be problematic. Click here for more details.
- passagemath_modules-10.6.31.dist-info/METADATA +281 -0
- passagemath_modules-10.6.31.dist-info/RECORD +807 -0
- passagemath_modules-10.6.31.dist-info/WHEEL +6 -0
- passagemath_modules-10.6.31.dist-info/top_level.txt +2 -0
- passagemath_modules.dylibs/libgfortran.5.dylib +0 -0
- passagemath_modules.dylibs/libgmp.10.dylib +0 -0
- passagemath_modules.dylibs/libgsl.28.dylib +0 -0
- passagemath_modules.dylibs/libmpc.3.dylib +0 -0
- passagemath_modules.dylibs/libmpfr.6.dylib +0 -0
- passagemath_modules.dylibs/libopenblasp-r0.3.29.dylib +0 -0
- passagemath_modules.dylibs/libquadmath.0.dylib +0 -0
- sage/algebras/all__sagemath_modules.py +20 -0
- sage/algebras/catalog.py +148 -0
- sage/algebras/clifford_algebra.py +3107 -0
- sage/algebras/clifford_algebra_element.cpython-314-darwin.so +0 -0
- sage/algebras/clifford_algebra_element.pxd +16 -0
- sage/algebras/clifford_algebra_element.pyx +997 -0
- sage/algebras/commutative_dga.py +4252 -0
- sage/algebras/exterior_algebra_groebner.cpython-314-darwin.so +0 -0
- sage/algebras/exterior_algebra_groebner.pxd +55 -0
- sage/algebras/exterior_algebra_groebner.pyx +727 -0
- sage/algebras/finite_dimensional_algebras/all.py +2 -0
- sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra.py +1029 -0
- sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.cpython-314-darwin.so +0 -0
- sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pxd +12 -0
- sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pyx +706 -0
- sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_ideal.py +196 -0
- sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_morphism.py +255 -0
- sage/algebras/finite_gca.py +528 -0
- sage/algebras/group_algebra.py +232 -0
- sage/algebras/lie_algebras/abelian.py +197 -0
- sage/algebras/lie_algebras/affine_lie_algebra.py +1213 -0
- sage/algebras/lie_algebras/all.py +25 -0
- sage/algebras/lie_algebras/all__sagemath_modules.py +1 -0
- sage/algebras/lie_algebras/bch.py +177 -0
- sage/algebras/lie_algebras/bgg_dual_module.py +1184 -0
- sage/algebras/lie_algebras/bgg_resolution.py +232 -0
- sage/algebras/lie_algebras/center_uea.py +767 -0
- sage/algebras/lie_algebras/classical_lie_algebra.py +2516 -0
- sage/algebras/lie_algebras/examples.py +683 -0
- sage/algebras/lie_algebras/free_lie_algebra.py +973 -0
- sage/algebras/lie_algebras/heisenberg.py +820 -0
- sage/algebras/lie_algebras/lie_algebra.py +1562 -0
- sage/algebras/lie_algebras/lie_algebra_element.cpython-314-darwin.so +0 -0
- sage/algebras/lie_algebras/lie_algebra_element.pxd +68 -0
- sage/algebras/lie_algebras/lie_algebra_element.pyx +2122 -0
- sage/algebras/lie_algebras/morphism.py +661 -0
- sage/algebras/lie_algebras/nilpotent_lie_algebra.py +457 -0
- sage/algebras/lie_algebras/onsager.py +1324 -0
- sage/algebras/lie_algebras/poincare_birkhoff_witt.py +816 -0
- sage/algebras/lie_algebras/quotient.py +462 -0
- sage/algebras/lie_algebras/rank_two_heisenberg_virasoro.py +355 -0
- sage/algebras/lie_algebras/representation.py +1040 -0
- sage/algebras/lie_algebras/structure_coefficients.py +459 -0
- sage/algebras/lie_algebras/subalgebra.py +967 -0
- sage/algebras/lie_algebras/symplectic_derivation.py +289 -0
- sage/algebras/lie_algebras/verma_module.py +1630 -0
- sage/algebras/lie_algebras/virasoro.py +1186 -0
- sage/algebras/octonion_algebra.cpython-314-darwin.so +0 -0
- sage/algebras/octonion_algebra.pxd +20 -0
- sage/algebras/octonion_algebra.pyx +987 -0
- sage/algebras/orlik_solomon.py +907 -0
- sage/algebras/orlik_terao.py +779 -0
- sage/algebras/steenrod/all.py +7 -0
- sage/algebras/steenrod/steenrod_algebra.py +4258 -0
- sage/algebras/steenrod/steenrod_algebra_bases.py +1179 -0
- sage/algebras/steenrod/steenrod_algebra_misc.py +1167 -0
- sage/algebras/steenrod/steenrod_algebra_mult.py +954 -0
- sage/algebras/weyl_algebra.py +1126 -0
- sage/all__sagemath_modules.py +62 -0
- sage/calculus/all__sagemath_modules.py +19 -0
- sage/calculus/expr.py +205 -0
- sage/calculus/integration.cpython-314-darwin.so +0 -0
- sage/calculus/integration.pyx +698 -0
- sage/calculus/interpolation.cpython-314-darwin.so +0 -0
- sage/calculus/interpolation.pxd +13 -0
- sage/calculus/interpolation.pyx +387 -0
- sage/calculus/interpolators.cpython-314-darwin.so +0 -0
- sage/calculus/interpolators.pyx +326 -0
- sage/calculus/ode.cpython-314-darwin.so +0 -0
- sage/calculus/ode.pxd +5 -0
- sage/calculus/ode.pyx +610 -0
- sage/calculus/riemann.cpython-314-darwin.so +0 -0
- sage/calculus/riemann.pyx +1521 -0
- sage/calculus/test_sympy.py +201 -0
- sage/calculus/transforms/all.py +7 -0
- sage/calculus/transforms/dft.py +844 -0
- sage/calculus/transforms/dwt.cpython-314-darwin.so +0 -0
- sage/calculus/transforms/dwt.pxd +7 -0
- sage/calculus/transforms/dwt.pyx +160 -0
- sage/calculus/transforms/fft.cpython-314-darwin.so +0 -0
- sage/calculus/transforms/fft.pxd +12 -0
- sage/calculus/transforms/fft.pyx +487 -0
- sage/calculus/wester.py +662 -0
- sage/coding/abstract_code.py +1108 -0
- sage/coding/ag_code.py +868 -0
- sage/coding/ag_code_decoders.cpython-314-darwin.so +0 -0
- sage/coding/ag_code_decoders.pyx +2639 -0
- sage/coding/all.py +15 -0
- sage/coding/bch_code.py +494 -0
- sage/coding/binary_code.cpython-314-darwin.so +0 -0
- sage/coding/binary_code.pxd +124 -0
- sage/coding/binary_code.pyx +4139 -0
- sage/coding/bounds_catalog.py +43 -0
- sage/coding/channel.py +819 -0
- sage/coding/channels_catalog.py +29 -0
- sage/coding/code_bounds.py +755 -0
- sage/coding/code_constructions.py +804 -0
- sage/coding/codes_catalog.py +111 -0
- sage/coding/cyclic_code.py +1329 -0
- sage/coding/databases.py +316 -0
- sage/coding/decoder.py +373 -0
- sage/coding/decoders_catalog.py +88 -0
- sage/coding/delsarte_bounds.py +709 -0
- sage/coding/encoder.py +390 -0
- sage/coding/encoders_catalog.py +64 -0
- sage/coding/extended_code.py +468 -0
- sage/coding/gabidulin_code.py +1058 -0
- sage/coding/golay_code.py +404 -0
- sage/coding/goppa_code.py +441 -0
- sage/coding/grs_code.py +2371 -0
- sage/coding/guava.py +107 -0
- sage/coding/guruswami_sudan/all.py +1 -0
- sage/coding/guruswami_sudan/gs_decoder.py +897 -0
- sage/coding/guruswami_sudan/interpolation.py +409 -0
- sage/coding/guruswami_sudan/utils.py +176 -0
- sage/coding/hamming_code.py +176 -0
- sage/coding/information_set_decoder.py +1032 -0
- sage/coding/kasami_codes.cpython-314-darwin.so +0 -0
- sage/coding/kasami_codes.pyx +351 -0
- sage/coding/linear_code.py +3067 -0
- sage/coding/linear_code_no_metric.py +1354 -0
- sage/coding/linear_rank_metric.py +961 -0
- sage/coding/parity_check_code.py +353 -0
- sage/coding/punctured_code.py +719 -0
- sage/coding/reed_muller_code.py +999 -0
- sage/coding/self_dual_codes.py +942 -0
- sage/coding/source_coding/all.py +2 -0
- sage/coding/source_coding/huffman.py +553 -0
- sage/coding/subfield_subcode.py +423 -0
- sage/coding/two_weight_db.py +399 -0
- sage/combinat/all__sagemath_modules.py +7 -0
- sage/combinat/cartesian_product.py +347 -0
- sage/combinat/family.py +11 -0
- sage/combinat/free_module.py +1977 -0
- sage/combinat/root_system/all.py +147 -0
- sage/combinat/root_system/ambient_space.py +527 -0
- sage/combinat/root_system/associahedron.py +471 -0
- sage/combinat/root_system/braid_move_calculator.py +143 -0
- sage/combinat/root_system/braid_orbit.cpython-314-darwin.so +0 -0
- sage/combinat/root_system/braid_orbit.pyx +144 -0
- sage/combinat/root_system/branching_rules.py +2301 -0
- sage/combinat/root_system/cartan_matrix.py +1245 -0
- sage/combinat/root_system/cartan_type.py +3069 -0
- sage/combinat/root_system/coxeter_group.py +162 -0
- sage/combinat/root_system/coxeter_matrix.py +1261 -0
- sage/combinat/root_system/coxeter_type.py +681 -0
- sage/combinat/root_system/dynkin_diagram.py +900 -0
- sage/combinat/root_system/extended_affine_weyl_group.py +2993 -0
- sage/combinat/root_system/fundamental_group.py +795 -0
- sage/combinat/root_system/hecke_algebra_representation.py +1203 -0
- sage/combinat/root_system/integrable_representations.py +1227 -0
- sage/combinat/root_system/non_symmetric_macdonald_polynomials.py +1965 -0
- sage/combinat/root_system/pieri_factors.py +1147 -0
- sage/combinat/root_system/plot.py +1615 -0
- sage/combinat/root_system/root_lattice_realization_algebras.py +1214 -0
- sage/combinat/root_system/root_lattice_realizations.py +4628 -0
- sage/combinat/root_system/root_space.py +487 -0
- sage/combinat/root_system/root_system.py +882 -0
- sage/combinat/root_system/type_A.py +348 -0
- sage/combinat/root_system/type_A_affine.py +227 -0
- sage/combinat/root_system/type_A_infinity.py +241 -0
- sage/combinat/root_system/type_B.py +347 -0
- sage/combinat/root_system/type_BC_affine.py +287 -0
- sage/combinat/root_system/type_B_affine.py +216 -0
- sage/combinat/root_system/type_C.py +317 -0
- sage/combinat/root_system/type_C_affine.py +188 -0
- sage/combinat/root_system/type_D.py +357 -0
- sage/combinat/root_system/type_D_affine.py +208 -0
- sage/combinat/root_system/type_E.py +641 -0
- sage/combinat/root_system/type_E_affine.py +231 -0
- sage/combinat/root_system/type_F.py +387 -0
- sage/combinat/root_system/type_F_affine.py +137 -0
- sage/combinat/root_system/type_G.py +293 -0
- sage/combinat/root_system/type_G_affine.py +132 -0
- sage/combinat/root_system/type_H.py +105 -0
- sage/combinat/root_system/type_I.py +110 -0
- sage/combinat/root_system/type_Q.py +150 -0
- sage/combinat/root_system/type_affine.py +509 -0
- sage/combinat/root_system/type_dual.py +704 -0
- sage/combinat/root_system/type_folded.py +301 -0
- sage/combinat/root_system/type_marked.py +748 -0
- sage/combinat/root_system/type_reducible.py +601 -0
- sage/combinat/root_system/type_relabel.py +730 -0
- sage/combinat/root_system/type_super_A.py +837 -0
- sage/combinat/root_system/weight_lattice_realizations.py +1188 -0
- sage/combinat/root_system/weight_space.py +639 -0
- sage/combinat/root_system/weyl_characters.py +2238 -0
- sage/crypto/__init__.py +4 -0
- sage/crypto/all.py +28 -0
- sage/crypto/block_cipher/all.py +7 -0
- sage/crypto/block_cipher/des.py +1065 -0
- sage/crypto/block_cipher/miniaes.py +2171 -0
- sage/crypto/block_cipher/present.py +909 -0
- sage/crypto/block_cipher/sdes.py +1527 -0
- sage/crypto/boolean_function.cpython-314-darwin.so +0 -0
- sage/crypto/boolean_function.pxd +10 -0
- sage/crypto/boolean_function.pyx +1487 -0
- sage/crypto/cipher.py +78 -0
- sage/crypto/classical.py +3668 -0
- sage/crypto/classical_cipher.py +569 -0
- sage/crypto/cryptosystem.py +387 -0
- sage/crypto/key_exchange/all.py +7 -0
- sage/crypto/key_exchange/catalog.py +24 -0
- sage/crypto/key_exchange/diffie_hellman.py +323 -0
- sage/crypto/key_exchange/key_exchange_scheme.py +107 -0
- sage/crypto/lattice.py +312 -0
- sage/crypto/lfsr.py +295 -0
- sage/crypto/lwe.py +840 -0
- sage/crypto/mq/__init__.py +4 -0
- sage/crypto/mq/mpolynomialsystemgenerator.py +204 -0
- sage/crypto/mq/rijndael_gf.py +2345 -0
- sage/crypto/mq/sbox.py +7 -0
- sage/crypto/mq/sr.py +3344 -0
- sage/crypto/public_key/all.py +5 -0
- sage/crypto/public_key/blum_goldwasser.py +776 -0
- sage/crypto/sbox.cpython-314-darwin.so +0 -0
- sage/crypto/sbox.pyx +2090 -0
- sage/crypto/sboxes.py +2090 -0
- sage/crypto/stream.py +390 -0
- sage/crypto/stream_cipher.py +297 -0
- sage/crypto/util.py +519 -0
- sage/ext/all__sagemath_modules.py +1 -0
- sage/ext/interpreters/__init__.py +1 -0
- sage/ext/interpreters/all__sagemath_modules.py +2 -0
- sage/ext/interpreters/wrapper_cc.cpython-314-darwin.so +0 -0
- sage/ext/interpreters/wrapper_cc.pxd +30 -0
- sage/ext/interpreters/wrapper_cc.pyx +252 -0
- sage/ext/interpreters/wrapper_cdf.cpython-314-darwin.so +0 -0
- sage/ext/interpreters/wrapper_cdf.pxd +26 -0
- sage/ext/interpreters/wrapper_cdf.pyx +245 -0
- sage/ext/interpreters/wrapper_rdf.cpython-314-darwin.so +0 -0
- sage/ext/interpreters/wrapper_rdf.pxd +23 -0
- sage/ext/interpreters/wrapper_rdf.pyx +221 -0
- sage/ext/interpreters/wrapper_rr.cpython-314-darwin.so +0 -0
- sage/ext/interpreters/wrapper_rr.pxd +28 -0
- sage/ext/interpreters/wrapper_rr.pyx +335 -0
- sage/geometry/all__sagemath_modules.py +5 -0
- sage/geometry/toric_lattice.py +1745 -0
- sage/geometry/toric_lattice_element.cpython-314-darwin.so +0 -0
- sage/geometry/toric_lattice_element.pyx +432 -0
- sage/groups/abelian_gps/abelian_group.py +1925 -0
- sage/groups/abelian_gps/abelian_group_element.py +164 -0
- sage/groups/abelian_gps/all__sagemath_modules.py +5 -0
- sage/groups/abelian_gps/dual_abelian_group.py +421 -0
- sage/groups/abelian_gps/dual_abelian_group_element.py +179 -0
- sage/groups/abelian_gps/element_base.py +341 -0
- sage/groups/abelian_gps/values.py +488 -0
- sage/groups/additive_abelian/additive_abelian_group.py +476 -0
- sage/groups/additive_abelian/additive_abelian_wrapper.py +857 -0
- sage/groups/additive_abelian/all.py +4 -0
- sage/groups/additive_abelian/qmodnz.py +231 -0
- sage/groups/additive_abelian/qmodnz_element.py +349 -0
- sage/groups/affine_gps/affine_group.py +535 -0
- sage/groups/affine_gps/all.py +1 -0
- sage/groups/affine_gps/catalog.py +17 -0
- sage/groups/affine_gps/euclidean_group.py +246 -0
- sage/groups/affine_gps/group_element.py +562 -0
- sage/groups/all__sagemath_modules.py +12 -0
- sage/groups/galois_group.py +479 -0
- sage/groups/matrix_gps/all.py +4 -0
- sage/groups/matrix_gps/all__sagemath_modules.py +13 -0
- sage/groups/matrix_gps/catalog.py +26 -0
- sage/groups/matrix_gps/coxeter_group.py +927 -0
- sage/groups/matrix_gps/finitely_generated.py +487 -0
- sage/groups/matrix_gps/group_element.cpython-314-darwin.so +0 -0
- sage/groups/matrix_gps/group_element.pxd +11 -0
- sage/groups/matrix_gps/group_element.pyx +431 -0
- sage/groups/matrix_gps/linear.py +440 -0
- sage/groups/matrix_gps/matrix_group.py +617 -0
- sage/groups/matrix_gps/named_group.py +296 -0
- sage/groups/matrix_gps/orthogonal.py +544 -0
- sage/groups/matrix_gps/symplectic.py +251 -0
- sage/groups/matrix_gps/unitary.py +436 -0
- sage/groups/misc_gps/all__sagemath_modules.py +1 -0
- sage/groups/misc_gps/argument_groups.py +1905 -0
- sage/groups/misc_gps/imaginary_groups.py +479 -0
- sage/groups/perm_gps/all__sagemath_modules.py +1 -0
- sage/groups/perm_gps/partn_ref/all__sagemath_modules.py +1 -0
- sage/groups/perm_gps/partn_ref/refinement_binary.cpython-314-darwin.so +0 -0
- sage/groups/perm_gps/partn_ref/refinement_binary.pxd +41 -0
- sage/groups/perm_gps/partn_ref/refinement_binary.pyx +1167 -0
- sage/groups/perm_gps/partn_ref/refinement_matrices.cpython-314-darwin.so +0 -0
- sage/groups/perm_gps/partn_ref/refinement_matrices.pxd +31 -0
- sage/groups/perm_gps/partn_ref/refinement_matrices.pyx +385 -0
- sage/homology/algebraic_topological_model.py +595 -0
- sage/homology/all.py +2 -0
- sage/homology/all__sagemath_modules.py +8 -0
- sage/homology/chain_complex.py +2148 -0
- sage/homology/chain_complex_homspace.py +165 -0
- sage/homology/chain_complex_morphism.py +629 -0
- sage/homology/chain_homotopy.py +604 -0
- sage/homology/chains.py +653 -0
- sage/homology/free_resolution.py +923 -0
- sage/homology/graded_resolution.py +567 -0
- sage/homology/hochschild_complex.py +756 -0
- sage/homology/homology_group.py +188 -0
- sage/homology/homology_morphism.py +422 -0
- sage/homology/homology_vector_space_with_basis.py +1454 -0
- sage/homology/koszul_complex.py +169 -0
- sage/homology/matrix_utils.py +205 -0
- sage/libs/all__sagemath_modules.py +1 -0
- sage/libs/gsl/__init__.py +1 -0
- sage/libs/gsl/airy.pxd +56 -0
- sage/libs/gsl/all.pxd +66 -0
- sage/libs/gsl/array.cpython-314-darwin.so +0 -0
- sage/libs/gsl/array.pxd +5 -0
- sage/libs/gsl/array.pyx +102 -0
- sage/libs/gsl/bessel.pxd +208 -0
- sage/libs/gsl/blas.pxd +116 -0
- sage/libs/gsl/blas_types.pxd +34 -0
- sage/libs/gsl/block.pxd +52 -0
- sage/libs/gsl/chebyshev.pxd +37 -0
- sage/libs/gsl/clausen.pxd +12 -0
- sage/libs/gsl/combination.pxd +47 -0
- sage/libs/gsl/complex.pxd +151 -0
- sage/libs/gsl/coulomb.pxd +30 -0
- sage/libs/gsl/coupling.pxd +21 -0
- sage/libs/gsl/dawson.pxd +12 -0
- sage/libs/gsl/debye.pxd +24 -0
- sage/libs/gsl/dilog.pxd +14 -0
- sage/libs/gsl/eigen.pxd +46 -0
- sage/libs/gsl/elementary.pxd +12 -0
- sage/libs/gsl/ellint.pxd +48 -0
- sage/libs/gsl/elljac.pxd +8 -0
- sage/libs/gsl/erf.pxd +32 -0
- sage/libs/gsl/errno.pxd +26 -0
- sage/libs/gsl/exp.pxd +44 -0
- sage/libs/gsl/expint.pxd +44 -0
- sage/libs/gsl/fermi_dirac.pxd +44 -0
- sage/libs/gsl/fft.pxd +121 -0
- sage/libs/gsl/fit.pxd +50 -0
- sage/libs/gsl/gamma.pxd +94 -0
- sage/libs/gsl/gegenbauer.pxd +26 -0
- sage/libs/gsl/histogram.pxd +176 -0
- sage/libs/gsl/hyperg.pxd +52 -0
- sage/libs/gsl/integration.pxd +69 -0
- sage/libs/gsl/interp.pxd +109 -0
- sage/libs/gsl/laguerre.pxd +24 -0
- sage/libs/gsl/lambert.pxd +16 -0
- sage/libs/gsl/legendre.pxd +90 -0
- sage/libs/gsl/linalg.pxd +185 -0
- sage/libs/gsl/log.pxd +26 -0
- sage/libs/gsl/math.pxd +43 -0
- sage/libs/gsl/matrix.pxd +143 -0
- sage/libs/gsl/matrix_complex.pxd +130 -0
- sage/libs/gsl/min.pxd +67 -0
- sage/libs/gsl/monte.pxd +56 -0
- sage/libs/gsl/ntuple.pxd +32 -0
- sage/libs/gsl/odeiv.pxd +70 -0
- sage/libs/gsl/permutation.pxd +78 -0
- sage/libs/gsl/poly.pxd +40 -0
- sage/libs/gsl/pow_int.pxd +12 -0
- sage/libs/gsl/psi.pxd +28 -0
- sage/libs/gsl/qrng.pxd +29 -0
- sage/libs/gsl/random.pxd +257 -0
- sage/libs/gsl/rng.pxd +100 -0
- sage/libs/gsl/roots.pxd +72 -0
- sage/libs/gsl/sort.pxd +36 -0
- sage/libs/gsl/statistics.pxd +59 -0
- sage/libs/gsl/sum.pxd +55 -0
- sage/libs/gsl/synchrotron.pxd +16 -0
- sage/libs/gsl/transport.pxd +24 -0
- sage/libs/gsl/trig.pxd +58 -0
- sage/libs/gsl/types.pxd +137 -0
- sage/libs/gsl/vector.pxd +101 -0
- sage/libs/gsl/vector_complex.pxd +83 -0
- sage/libs/gsl/wavelet.pxd +49 -0
- sage/libs/gsl/zeta.pxd +28 -0
- sage/libs/mpc/__init__.pxd +114 -0
- sage/libs/mpc/types.pxd +28 -0
- sage/libs/mpfr/__init__.pxd +299 -0
- sage/libs/mpfr/types.pxd +26 -0
- sage/libs/mpmath/__init__.py +1 -0
- sage/libs/mpmath/all.py +27 -0
- sage/libs/mpmath/all__sagemath_modules.py +1 -0
- sage/libs/mpmath/utils.cpython-314-darwin.so +0 -0
- sage/libs/mpmath/utils.pxd +4 -0
- sage/libs/mpmath/utils.pyx +319 -0
- sage/matrix/action.cpython-314-darwin.so +0 -0
- sage/matrix/action.pxd +26 -0
- sage/matrix/action.pyx +596 -0
- sage/matrix/all.py +9 -0
- sage/matrix/args.cpython-314-darwin.so +0 -0
- sage/matrix/args.pxd +144 -0
- sage/matrix/args.pyx +1668 -0
- sage/matrix/benchmark.py +1258 -0
- sage/matrix/berlekamp_massey.py +95 -0
- sage/matrix/compute_J_ideal.py +926 -0
- sage/matrix/constructor.cpython-314-darwin.so +0 -0
- sage/matrix/constructor.pyx +750 -0
- sage/matrix/docs.py +430 -0
- sage/matrix/echelon_matrix.cpython-314-darwin.so +0 -0
- sage/matrix/echelon_matrix.pyx +155 -0
- sage/matrix/matrix.pxd +2 -0
- sage/matrix/matrix0.cpython-314-darwin.so +0 -0
- sage/matrix/matrix0.pxd +68 -0
- sage/matrix/matrix0.pyx +6324 -0
- sage/matrix/matrix1.cpython-314-darwin.so +0 -0
- sage/matrix/matrix1.pxd +8 -0
- sage/matrix/matrix1.pyx +2851 -0
- sage/matrix/matrix2.cpython-314-darwin.so +0 -0
- sage/matrix/matrix2.pxd +25 -0
- sage/matrix/matrix2.pyx +20181 -0
- sage/matrix/matrix_cdv.cpython-314-darwin.so +0 -0
- sage/matrix/matrix_cdv.pxd +4 -0
- sage/matrix/matrix_cdv.pyx +93 -0
- sage/matrix/matrix_complex_double_dense.cpython-314-darwin.so +0 -0
- sage/matrix/matrix_complex_double_dense.pxd +5 -0
- sage/matrix/matrix_complex_double_dense.pyx +98 -0
- sage/matrix/matrix_dense.cpython-314-darwin.so +0 -0
- sage/matrix/matrix_dense.pxd +5 -0
- sage/matrix/matrix_dense.pyx +343 -0
- sage/matrix/matrix_domain_dense.pxd +5 -0
- sage/matrix/matrix_domain_sparse.pxd +5 -0
- sage/matrix/matrix_double_dense.cpython-314-darwin.so +0 -0
- sage/matrix/matrix_double_dense.pxd +7 -0
- sage/matrix/matrix_double_dense.pyx +3906 -0
- sage/matrix/matrix_double_sparse.cpython-314-darwin.so +0 -0
- sage/matrix/matrix_double_sparse.pxd +6 -0
- sage/matrix/matrix_double_sparse.pyx +248 -0
- sage/matrix/matrix_generic_dense.cpython-314-darwin.so +0 -0
- sage/matrix/matrix_generic_dense.pxd +7 -0
- sage/matrix/matrix_generic_dense.pyx +354 -0
- sage/matrix/matrix_generic_sparse.cpython-314-darwin.so +0 -0
- sage/matrix/matrix_generic_sparse.pxd +7 -0
- sage/matrix/matrix_generic_sparse.pyx +461 -0
- sage/matrix/matrix_laurent_mpolynomial_dense.cpython-314-darwin.so +0 -0
- sage/matrix/matrix_laurent_mpolynomial_dense.pxd +5 -0
- sage/matrix/matrix_laurent_mpolynomial_dense.pyx +115 -0
- sage/matrix/matrix_misc.py +313 -0
- sage/matrix/matrix_numpy_dense.cpython-314-darwin.so +0 -0
- sage/matrix/matrix_numpy_dense.pxd +14 -0
- sage/matrix/matrix_numpy_dense.pyx +450 -0
- sage/matrix/matrix_numpy_integer_dense.cpython-314-darwin.so +0 -0
- sage/matrix/matrix_numpy_integer_dense.pxd +7 -0
- sage/matrix/matrix_numpy_integer_dense.pyx +59 -0
- sage/matrix/matrix_polynomial_dense.cpython-314-darwin.so +0 -0
- sage/matrix/matrix_polynomial_dense.pxd +5 -0
- sage/matrix/matrix_polynomial_dense.pyx +5341 -0
- sage/matrix/matrix_real_double_dense.cpython-314-darwin.so +0 -0
- sage/matrix/matrix_real_double_dense.pxd +7 -0
- sage/matrix/matrix_real_double_dense.pyx +122 -0
- sage/matrix/matrix_space.py +2848 -0
- sage/matrix/matrix_sparse.cpython-314-darwin.so +0 -0
- sage/matrix/matrix_sparse.pxd +5 -0
- sage/matrix/matrix_sparse.pyx +1222 -0
- sage/matrix/matrix_window.cpython-314-darwin.so +0 -0
- sage/matrix/matrix_window.pxd +37 -0
- sage/matrix/matrix_window.pyx +242 -0
- sage/matrix/misc_mpfr.cpython-314-darwin.so +0 -0
- sage/matrix/misc_mpfr.pyx +80 -0
- sage/matrix/operation_table.py +1182 -0
- sage/matrix/special.py +3666 -0
- sage/matrix/strassen.cpython-314-darwin.so +0 -0
- sage/matrix/strassen.pyx +851 -0
- sage/matrix/symplectic_basis.py +541 -0
- sage/matrix/template.pxd +6 -0
- sage/matrix/tests.py +71 -0
- sage/matroids/advanced.py +77 -0
- sage/matroids/all.py +13 -0
- sage/matroids/basis_exchange_matroid.cpython-314-darwin.so +0 -0
- sage/matroids/basis_exchange_matroid.pxd +96 -0
- sage/matroids/basis_exchange_matroid.pyx +2344 -0
- sage/matroids/basis_matroid.cpython-314-darwin.so +0 -0
- sage/matroids/basis_matroid.pxd +45 -0
- sage/matroids/basis_matroid.pyx +1217 -0
- sage/matroids/catalog.py +44 -0
- sage/matroids/chow_ring.py +473 -0
- sage/matroids/chow_ring_ideal.py +849 -0
- sage/matroids/circuit_closures_matroid.cpython-314-darwin.so +0 -0
- sage/matroids/circuit_closures_matroid.pxd +16 -0
- sage/matroids/circuit_closures_matroid.pyx +559 -0
- sage/matroids/circuits_matroid.cpython-314-darwin.so +0 -0
- sage/matroids/circuits_matroid.pxd +38 -0
- sage/matroids/circuits_matroid.pyx +947 -0
- sage/matroids/constructor.py +1086 -0
- sage/matroids/database_collections.py +365 -0
- sage/matroids/database_matroids.py +5338 -0
- sage/matroids/dual_matroid.py +583 -0
- sage/matroids/extension.cpython-314-darwin.so +0 -0
- sage/matroids/extension.pxd +34 -0
- sage/matroids/extension.pyx +519 -0
- sage/matroids/flats_matroid.cpython-314-darwin.so +0 -0
- sage/matroids/flats_matroid.pxd +28 -0
- sage/matroids/flats_matroid.pyx +715 -0
- sage/matroids/gammoid.py +600 -0
- sage/matroids/graphic_matroid.cpython-314-darwin.so +0 -0
- sage/matroids/graphic_matroid.pxd +39 -0
- sage/matroids/graphic_matroid.pyx +2024 -0
- sage/matroids/lean_matrix.cpython-314-darwin.so +0 -0
- sage/matroids/lean_matrix.pxd +126 -0
- sage/matroids/lean_matrix.pyx +3667 -0
- sage/matroids/linear_matroid.cpython-314-darwin.so +0 -0
- sage/matroids/linear_matroid.pxd +180 -0
- sage/matroids/linear_matroid.pyx +6649 -0
- sage/matroids/matroid.cpython-314-darwin.so +0 -0
- sage/matroids/matroid.pxd +243 -0
- sage/matroids/matroid.pyx +8759 -0
- sage/matroids/matroids_catalog.py +190 -0
- sage/matroids/matroids_plot_helpers.py +890 -0
- sage/matroids/minor_matroid.py +480 -0
- sage/matroids/minorfix.h +9 -0
- sage/matroids/named_matroids.py +5 -0
- sage/matroids/rank_matroid.py +268 -0
- sage/matroids/set_system.cpython-314-darwin.so +0 -0
- sage/matroids/set_system.pxd +38 -0
- sage/matroids/set_system.pyx +800 -0
- sage/matroids/transversal_matroid.cpython-314-darwin.so +0 -0
- sage/matroids/transversal_matroid.pxd +14 -0
- sage/matroids/transversal_matroid.pyx +893 -0
- sage/matroids/union_matroid.cpython-314-darwin.so +0 -0
- sage/matroids/union_matroid.pxd +20 -0
- sage/matroids/union_matroid.pyx +331 -0
- sage/matroids/unpickling.cpython-314-darwin.so +0 -0
- sage/matroids/unpickling.pyx +843 -0
- sage/matroids/utilities.py +809 -0
- sage/misc/all__sagemath_modules.py +20 -0
- sage/misc/c3.cpython-314-darwin.so +0 -0
- sage/misc/c3.pyx +238 -0
- sage/misc/compat.py +87 -0
- sage/misc/element_with_label.py +173 -0
- sage/misc/func_persist.py +79 -0
- sage/misc/pickle_old.cpython-314-darwin.so +0 -0
- sage/misc/pickle_old.pyx +19 -0
- sage/misc/proof.py +7 -0
- sage/misc/replace_dot_all.py +472 -0
- sage/misc/sagedoc_conf.py +168 -0
- sage/misc/sphinxify.py +167 -0
- sage/misc/test_class_pickling.py +85 -0
- sage/modules/all.py +42 -0
- sage/modules/complex_double_vector.py +25 -0
- sage/modules/diamond_cutting.py +380 -0
- sage/modules/fg_pid/all.py +1 -0
- sage/modules/fg_pid/fgp_element.py +456 -0
- sage/modules/fg_pid/fgp_module.py +2091 -0
- sage/modules/fg_pid/fgp_morphism.py +550 -0
- sage/modules/filtered_vector_space.py +1271 -0
- sage/modules/finite_submodule_iter.cpython-314-darwin.so +0 -0
- sage/modules/finite_submodule_iter.pxd +27 -0
- sage/modules/finite_submodule_iter.pyx +452 -0
- sage/modules/fp_graded/all.py +1 -0
- sage/modules/fp_graded/element.py +346 -0
- sage/modules/fp_graded/free_element.py +298 -0
- sage/modules/fp_graded/free_homspace.py +53 -0
- sage/modules/fp_graded/free_module.py +1060 -0
- sage/modules/fp_graded/free_morphism.py +217 -0
- sage/modules/fp_graded/homspace.py +563 -0
- sage/modules/fp_graded/module.py +1340 -0
- sage/modules/fp_graded/morphism.py +1990 -0
- sage/modules/fp_graded/steenrod/all.py +1 -0
- sage/modules/fp_graded/steenrod/homspace.py +65 -0
- sage/modules/fp_graded/steenrod/module.py +477 -0
- sage/modules/fp_graded/steenrod/morphism.py +404 -0
- sage/modules/fp_graded/steenrod/profile.py +241 -0
- sage/modules/free_module.py +8447 -0
- sage/modules/free_module_element.cpython-314-darwin.so +0 -0
- sage/modules/free_module_element.pxd +22 -0
- sage/modules/free_module_element.pyx +5445 -0
- sage/modules/free_module_homspace.py +369 -0
- sage/modules/free_module_integer.py +896 -0
- sage/modules/free_module_morphism.py +823 -0
- sage/modules/free_module_pseudohomspace.py +352 -0
- sage/modules/free_module_pseudomorphism.py +578 -0
- sage/modules/free_quadratic_module.py +1706 -0
- sage/modules/free_quadratic_module_integer_symmetric.py +1790 -0
- sage/modules/matrix_morphism.py +1745 -0
- sage/modules/misc.py +103 -0
- sage/modules/module_functors.py +192 -0
- sage/modules/multi_filtered_vector_space.py +719 -0
- sage/modules/ore_module.py +2208 -0
- sage/modules/ore_module_element.py +178 -0
- sage/modules/ore_module_homspace.py +147 -0
- sage/modules/ore_module_morphism.py +968 -0
- sage/modules/quotient_module.py +699 -0
- sage/modules/real_double_vector.py +22 -0
- sage/modules/submodule.py +255 -0
- sage/modules/tensor_operations.py +567 -0
- sage/modules/torsion_quadratic_module.py +1352 -0
- sage/modules/tutorial_free_modules.py +248 -0
- sage/modules/vector_complex_double_dense.cpython-314-darwin.so +0 -0
- sage/modules/vector_complex_double_dense.pxd +6 -0
- sage/modules/vector_complex_double_dense.pyx +117 -0
- sage/modules/vector_double_dense.cpython-314-darwin.so +0 -0
- sage/modules/vector_double_dense.pxd +6 -0
- sage/modules/vector_double_dense.pyx +604 -0
- sage/modules/vector_integer_dense.cpython-314-darwin.so +0 -0
- sage/modules/vector_integer_dense.pxd +15 -0
- sage/modules/vector_integer_dense.pyx +361 -0
- sage/modules/vector_integer_sparse.cpython-314-darwin.so +0 -0
- sage/modules/vector_integer_sparse.pxd +29 -0
- sage/modules/vector_integer_sparse.pyx +406 -0
- sage/modules/vector_modn_dense.cpython-314-darwin.so +0 -0
- sage/modules/vector_modn_dense.pxd +12 -0
- sage/modules/vector_modn_dense.pyx +394 -0
- sage/modules/vector_modn_sparse.cpython-314-darwin.so +0 -0
- sage/modules/vector_modn_sparse.pxd +21 -0
- sage/modules/vector_modn_sparse.pyx +298 -0
- sage/modules/vector_numpy_dense.cpython-314-darwin.so +0 -0
- sage/modules/vector_numpy_dense.pxd +15 -0
- sage/modules/vector_numpy_dense.pyx +304 -0
- sage/modules/vector_numpy_integer_dense.cpython-314-darwin.so +0 -0
- sage/modules/vector_numpy_integer_dense.pxd +7 -0
- sage/modules/vector_numpy_integer_dense.pyx +54 -0
- sage/modules/vector_rational_dense.cpython-314-darwin.so +0 -0
- sage/modules/vector_rational_dense.pxd +15 -0
- sage/modules/vector_rational_dense.pyx +387 -0
- sage/modules/vector_rational_sparse.cpython-314-darwin.so +0 -0
- sage/modules/vector_rational_sparse.pxd +30 -0
- sage/modules/vector_rational_sparse.pyx +413 -0
- sage/modules/vector_real_double_dense.cpython-314-darwin.so +0 -0
- sage/modules/vector_real_double_dense.pxd +6 -0
- sage/modules/vector_real_double_dense.pyx +126 -0
- sage/modules/vector_space_homspace.py +430 -0
- sage/modules/vector_space_morphism.py +989 -0
- sage/modules/with_basis/all.py +15 -0
- sage/modules/with_basis/cell_module.py +494 -0
- sage/modules/with_basis/indexed_element.cpython-314-darwin.so +0 -0
- sage/modules/with_basis/indexed_element.pxd +13 -0
- sage/modules/with_basis/indexed_element.pyx +1058 -0
- sage/modules/with_basis/invariant.py +1075 -0
- sage/modules/with_basis/morphism.py +1636 -0
- sage/modules/with_basis/representation.py +2939 -0
- sage/modules/with_basis/subquotient.py +685 -0
- sage/numerical/all__sagemath_modules.py +6 -0
- sage/numerical/gauss_legendre.cpython-314-darwin.so +0 -0
- sage/numerical/gauss_legendre.pyx +381 -0
- sage/numerical/optimize.py +910 -0
- sage/probability/all.py +10 -0
- sage/probability/probability_distribution.cpython-314-darwin.so +0 -0
- sage/probability/probability_distribution.pyx +1242 -0
- sage/probability/random_variable.py +411 -0
- sage/quadratic_forms/all.py +4 -0
- sage/quadratic_forms/all__sagemath_modules.py +15 -0
- sage/quadratic_forms/binary_qf.py +2042 -0
- sage/quadratic_forms/bqf_class_group.py +748 -0
- sage/quadratic_forms/constructions.py +93 -0
- sage/quadratic_forms/count_local_2.cpython-314-darwin.so +0 -0
- sage/quadratic_forms/count_local_2.pyx +365 -0
- sage/quadratic_forms/extras.py +195 -0
- sage/quadratic_forms/quadratic_form.py +1753 -0
- sage/quadratic_forms/quadratic_form__count_local_2.py +221 -0
- sage/quadratic_forms/quadratic_form__equivalence_testing.py +708 -0
- sage/quadratic_forms/quadratic_form__evaluate.cpython-314-darwin.so +0 -0
- sage/quadratic_forms/quadratic_form__evaluate.pyx +139 -0
- sage/quadratic_forms/quadratic_form__local_density_congruence.py +977 -0
- sage/quadratic_forms/quadratic_form__local_field_invariants.py +1072 -0
- sage/quadratic_forms/quadratic_form__neighbors.py +424 -0
- sage/quadratic_forms/quadratic_form__reduction_theory.py +488 -0
- sage/quadratic_forms/quadratic_form__split_local_covering.py +416 -0
- sage/quadratic_forms/quadratic_form__ternary_Tornaria.py +657 -0
- sage/quadratic_forms/quadratic_form__theta.py +352 -0
- sage/quadratic_forms/quadratic_form__variable_substitutions.py +370 -0
- sage/quadratic_forms/random_quadraticform.py +209 -0
- sage/quadratic_forms/ternary.cpython-314-darwin.so +0 -0
- sage/quadratic_forms/ternary.pyx +1154 -0
- sage/quadratic_forms/ternary_qf.py +2027 -0
- sage/rings/all__sagemath_modules.py +28 -0
- sage/rings/asymptotic/all__sagemath_modules.py +1 -0
- sage/rings/asymptotic/misc.py +1252 -0
- sage/rings/cc.py +4 -0
- sage/rings/cfinite_sequence.py +1306 -0
- sage/rings/complex_conversion.cpython-314-darwin.so +0 -0
- sage/rings/complex_conversion.pxd +8 -0
- sage/rings/complex_conversion.pyx +23 -0
- sage/rings/complex_double.cpython-314-darwin.so +0 -0
- sage/rings/complex_double.pxd +21 -0
- sage/rings/complex_double.pyx +2654 -0
- sage/rings/complex_mpc.cpython-314-darwin.so +0 -0
- sage/rings/complex_mpc.pxd +21 -0
- sage/rings/complex_mpc.pyx +2576 -0
- sage/rings/complex_mpfr.cpython-314-darwin.so +0 -0
- sage/rings/complex_mpfr.pxd +18 -0
- sage/rings/complex_mpfr.pyx +3602 -0
- sage/rings/derivation.py +2334 -0
- sage/rings/finite_rings/all__sagemath_modules.py +1 -0
- sage/rings/finite_rings/maps_finite_field.py +191 -0
- sage/rings/function_field/all__sagemath_modules.py +8 -0
- sage/rings/function_field/derivations.py +102 -0
- sage/rings/function_field/derivations_rational.py +132 -0
- sage/rings/function_field/differential.py +853 -0
- sage/rings/function_field/divisor.py +1107 -0
- sage/rings/function_field/drinfeld_modules/action.py +199 -0
- sage/rings/function_field/drinfeld_modules/all.py +1 -0
- sage/rings/function_field/drinfeld_modules/charzero_drinfeld_module.py +673 -0
- sage/rings/function_field/drinfeld_modules/drinfeld_module.py +2087 -0
- sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py +1131 -0
- sage/rings/function_field/drinfeld_modules/homset.py +420 -0
- sage/rings/function_field/drinfeld_modules/morphism.py +820 -0
- sage/rings/function_field/hermite_form_polynomial.cpython-314-darwin.so +0 -0
- sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
- sage/rings/function_field/khuri_makdisi.cpython-314-darwin.so +0 -0
- sage/rings/function_field/khuri_makdisi.pyx +935 -0
- sage/rings/invariants/all.py +4 -0
- sage/rings/invariants/invariant_theory.py +4597 -0
- sage/rings/invariants/reconstruction.py +395 -0
- sage/rings/polynomial/all__sagemath_modules.py +17 -0
- sage/rings/polynomial/integer_valued_polynomials.py +1230 -0
- sage/rings/polynomial/laurent_polynomial_mpair.cpython-314-darwin.so +0 -0
- sage/rings/polynomial/laurent_polynomial_mpair.pxd +15 -0
- sage/rings/polynomial/laurent_polynomial_mpair.pyx +2023 -0
- sage/rings/polynomial/ore_function_element.py +952 -0
- sage/rings/polynomial/ore_function_field.py +1028 -0
- sage/rings/polynomial/ore_polynomial_element.cpython-314-darwin.so +0 -0
- sage/rings/polynomial/ore_polynomial_element.pxd +48 -0
- sage/rings/polynomial/ore_polynomial_element.pyx +3145 -0
- sage/rings/polynomial/ore_polynomial_ring.py +1334 -0
- sage/rings/polynomial/polynomial_real_mpfr_dense.cpython-314-darwin.so +0 -0
- sage/rings/polynomial/polynomial_real_mpfr_dense.pyx +788 -0
- sage/rings/polynomial/q_integer_valued_polynomials.py +1264 -0
- sage/rings/polynomial/skew_polynomial_element.cpython-314-darwin.so +0 -0
- sage/rings/polynomial/skew_polynomial_element.pxd +9 -0
- sage/rings/polynomial/skew_polynomial_element.pyx +684 -0
- sage/rings/polynomial/skew_polynomial_finite_field.cpython-314-darwin.so +0 -0
- sage/rings/polynomial/skew_polynomial_finite_field.pxd +19 -0
- sage/rings/polynomial/skew_polynomial_finite_field.pyx +1093 -0
- sage/rings/polynomial/skew_polynomial_finite_order.cpython-314-darwin.so +0 -0
- sage/rings/polynomial/skew_polynomial_finite_order.pxd +10 -0
- sage/rings/polynomial/skew_polynomial_finite_order.pyx +567 -0
- sage/rings/polynomial/skew_polynomial_ring.py +908 -0
- sage/rings/real_double_element_gsl.cpython-314-darwin.so +0 -0
- sage/rings/real_double_element_gsl.pxd +8 -0
- sage/rings/real_double_element_gsl.pyx +794 -0
- sage/rings/real_field.py +58 -0
- sage/rings/real_mpfr.cpython-314-darwin.so +0 -0
- sage/rings/real_mpfr.pxd +29 -0
- sage/rings/real_mpfr.pyx +6122 -0
- sage/rings/ring_extension.cpython-314-darwin.so +0 -0
- sage/rings/ring_extension.pxd +42 -0
- sage/rings/ring_extension.pyx +2779 -0
- sage/rings/ring_extension_conversion.cpython-314-darwin.so +0 -0
- sage/rings/ring_extension_conversion.pxd +16 -0
- sage/rings/ring_extension_conversion.pyx +462 -0
- sage/rings/ring_extension_element.cpython-314-darwin.so +0 -0
- sage/rings/ring_extension_element.pxd +21 -0
- sage/rings/ring_extension_element.pyx +1635 -0
- sage/rings/ring_extension_homset.py +64 -0
- sage/rings/ring_extension_morphism.cpython-314-darwin.so +0 -0
- sage/rings/ring_extension_morphism.pxd +35 -0
- sage/rings/ring_extension_morphism.pyx +920 -0
- sage/schemes/all__sagemath_modules.py +1 -0
- sage/schemes/projective/all__sagemath_modules.py +1 -0
- sage/schemes/projective/coherent_sheaf.py +300 -0
- sage/schemes/projective/cohomology.py +510 -0
- sage/stats/all.py +15 -0
- sage/stats/basic_stats.py +489 -0
- sage/stats/distributions/all.py +7 -0
- sage/stats/distributions/catalog.py +34 -0
- sage/stats/distributions/dgs.h +50 -0
- sage/stats/distributions/dgs.pxd +111 -0
- sage/stats/distributions/dgs_bern.h +400 -0
- sage/stats/distributions/dgs_gauss.h +614 -0
- sage/stats/distributions/dgs_misc.h +104 -0
- sage/stats/distributions/discrete_gaussian_integer.cpython-314-darwin.so +0 -0
- sage/stats/distributions/discrete_gaussian_integer.pxd +14 -0
- sage/stats/distributions/discrete_gaussian_integer.pyx +498 -0
- sage/stats/distributions/discrete_gaussian_lattice.py +908 -0
- sage/stats/distributions/discrete_gaussian_polynomial.py +141 -0
- sage/stats/hmm/all.py +15 -0
- sage/stats/hmm/chmm.cpython-314-darwin.so +0 -0
- sage/stats/hmm/chmm.pyx +1595 -0
- sage/stats/hmm/distributions.cpython-314-darwin.so +0 -0
- sage/stats/hmm/distributions.pxd +29 -0
- sage/stats/hmm/distributions.pyx +531 -0
- sage/stats/hmm/hmm.cpython-314-darwin.so +0 -0
- sage/stats/hmm/hmm.pxd +17 -0
- sage/stats/hmm/hmm.pyx +1388 -0
- sage/stats/hmm/util.cpython-314-darwin.so +0 -0
- sage/stats/hmm/util.pxd +7 -0
- sage/stats/hmm/util.pyx +165 -0
- sage/stats/intlist.cpython-314-darwin.so +0 -0
- sage/stats/intlist.pxd +14 -0
- sage/stats/intlist.pyx +588 -0
- sage/stats/r.py +49 -0
- sage/stats/time_series.cpython-314-darwin.so +0 -0
- sage/stats/time_series.pxd +6 -0
- sage/stats/time_series.pyx +2546 -0
- sage/tensor/all.py +2 -0
- sage/tensor/modules/all.py +8 -0
- sage/tensor/modules/alternating_contr_tensor.py +761 -0
- sage/tensor/modules/comp.py +5598 -0
- sage/tensor/modules/ext_pow_free_module.py +824 -0
- sage/tensor/modules/finite_rank_free_module.py +3589 -0
- sage/tensor/modules/format_utilities.py +333 -0
- sage/tensor/modules/free_module_alt_form.py +858 -0
- sage/tensor/modules/free_module_automorphism.py +1207 -0
- sage/tensor/modules/free_module_basis.py +1074 -0
- sage/tensor/modules/free_module_element.py +284 -0
- sage/tensor/modules/free_module_homset.py +652 -0
- sage/tensor/modules/free_module_linear_group.py +564 -0
- sage/tensor/modules/free_module_morphism.py +1581 -0
- sage/tensor/modules/free_module_tensor.py +3289 -0
- sage/tensor/modules/reflexive_module.py +386 -0
- sage/tensor/modules/tensor_free_module.py +780 -0
- sage/tensor/modules/tensor_free_submodule.py +538 -0
- sage/tensor/modules/tensor_free_submodule_basis.py +140 -0
- sage/tensor/modules/tensor_with_indices.py +1043 -0
|
@@ -0,0 +1,853 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
# sage.doctest: needs sage.modules
|
|
3
|
+
"""
|
|
4
|
+
Differentials of function fields
|
|
5
|
+
|
|
6
|
+
Sage provides arithmetic with differentials of function fields.
|
|
7
|
+
|
|
8
|
+
EXAMPLES:
|
|
9
|
+
|
|
10
|
+
The module of differentials on a function field forms an one-dimensional vector space over
|
|
11
|
+
the function field::
|
|
12
|
+
|
|
13
|
+
sage: # needs sage.rings.finite_rings sage.rings.function_field
|
|
14
|
+
sage: K.<x> = FunctionField(GF(4)); _.<Y> = K[]
|
|
15
|
+
sage: L.<y> = K.extension(Y^3 + x + x^3*Y)
|
|
16
|
+
sage: f = x + y
|
|
17
|
+
sage: g = 1 / y
|
|
18
|
+
sage: df = f.differential()
|
|
19
|
+
sage: dg = g.differential()
|
|
20
|
+
sage: dfdg = f.derivative() / g.derivative()
|
|
21
|
+
sage: df == dfdg * dg
|
|
22
|
+
True
|
|
23
|
+
sage: df
|
|
24
|
+
(x*y^2 + 1/x*y + 1) d(x)
|
|
25
|
+
sage: df.parent()
|
|
26
|
+
Space of differentials of Function field in y defined by y^3 + x^3*y + x
|
|
27
|
+
|
|
28
|
+
We can compute a canonical divisor::
|
|
29
|
+
|
|
30
|
+
sage: # needs sage.rings.finite_rings sage.rings.function_field
|
|
31
|
+
sage: k = df.divisor()
|
|
32
|
+
sage: k.degree()
|
|
33
|
+
4
|
|
34
|
+
sage: k.degree() == 2 * L.genus() - 2
|
|
35
|
+
True
|
|
36
|
+
|
|
37
|
+
Exact differentials vanish and logarithmic differentials are stable under the
|
|
38
|
+
Cartier operation::
|
|
39
|
+
|
|
40
|
+
sage: # needs sage.rings.finite_rings sage.rings.function_field
|
|
41
|
+
sage: df.cartier()
|
|
42
|
+
0
|
|
43
|
+
sage: w = 1/f * df
|
|
44
|
+
sage: w.cartier() == w
|
|
45
|
+
True
|
|
46
|
+
|
|
47
|
+
AUTHORS:
|
|
48
|
+
|
|
49
|
+
- Kwankyu Lee (2017-04-30): initial version
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
# ****************************************************************************
|
|
53
|
+
# Copyright (C) 2016-2019 Kwankyu Lee <ekwankyu@gmail.com>
|
|
54
|
+
# 2019 Brent Baccala
|
|
55
|
+
# 2019 Travis Scrimshaw
|
|
56
|
+
#
|
|
57
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
58
|
+
# as published by the Free Software Foundation; either version 2 of
|
|
59
|
+
# the License, or (at your option) any later version.
|
|
60
|
+
# http://www.gnu.org/licenses/
|
|
61
|
+
# ****************************************************************************
|
|
62
|
+
|
|
63
|
+
from sage.misc.latex import latex
|
|
64
|
+
|
|
65
|
+
from sage.structure.unique_representation import UniqueRepresentation
|
|
66
|
+
from sage.structure.parent import Parent
|
|
67
|
+
from sage.structure.element import ModuleElement
|
|
68
|
+
from sage.structure.richcmp import richcmp
|
|
69
|
+
from sage.sets.family import Family
|
|
70
|
+
|
|
71
|
+
from sage.categories.modules import Modules
|
|
72
|
+
from sage.categories.morphism import Morphism
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
class FunctionFieldDifferential(ModuleElement):
|
|
76
|
+
"""
|
|
77
|
+
Base class for differentials on function fields.
|
|
78
|
+
|
|
79
|
+
INPUT:
|
|
80
|
+
|
|
81
|
+
- ``f`` -- element of the function field
|
|
82
|
+
|
|
83
|
+
- ``t`` -- element of the function field; if `t` is not specified, the generator
|
|
84
|
+
of the base differential is assumed
|
|
85
|
+
|
|
86
|
+
EXAMPLES::
|
|
87
|
+
|
|
88
|
+
sage: F.<x> = FunctionField(QQ)
|
|
89
|
+
sage: f = x/(x^2 + x + 1)
|
|
90
|
+
sage: f.differential()
|
|
91
|
+
((-x^2 + 1)/(x^4 + 2*x^3 + 3*x^2 + 2*x + 1)) d(x)
|
|
92
|
+
|
|
93
|
+
::
|
|
94
|
+
|
|
95
|
+
sage: K.<x> = FunctionField(QQ); _.<Y> = K[]
|
|
96
|
+
sage: L.<y> = K.extension(Y^3 + x + x^3*Y) # needs sage.rings.function_field
|
|
97
|
+
sage: L(x).differential() # needs sage.rings.function_field
|
|
98
|
+
d(x)
|
|
99
|
+
sage: y.differential() # needs sage.rings.function_field
|
|
100
|
+
((21/4*x/(x^7 + 27/4))*y^2 + ((3/2*x^7 + 9/4)/(x^8 + 27/4*x))*y + 7/2*x^4/(x^7 + 27/4)) d(x)
|
|
101
|
+
"""
|
|
102
|
+
def __init__(self, parent, f, t=None):
|
|
103
|
+
"""
|
|
104
|
+
Initialize the differential `fdt`.
|
|
105
|
+
|
|
106
|
+
TESTS::
|
|
107
|
+
|
|
108
|
+
sage: F.<x> = FunctionField(GF(7))
|
|
109
|
+
sage: f = x/(x^2 + x + 1)
|
|
110
|
+
sage: w = f.differential()
|
|
111
|
+
sage: TestSuite(w).run()
|
|
112
|
+
"""
|
|
113
|
+
ModuleElement.__init__(self, parent)
|
|
114
|
+
|
|
115
|
+
if t is not None:
|
|
116
|
+
f *= parent._derivation(t) * parent._gen_derivative_inv
|
|
117
|
+
|
|
118
|
+
self._f = f
|
|
119
|
+
|
|
120
|
+
def _repr_(self):
|
|
121
|
+
"""
|
|
122
|
+
Return the string representation of the differential.
|
|
123
|
+
|
|
124
|
+
EXAMPLES::
|
|
125
|
+
|
|
126
|
+
sage: K.<x> = FunctionField(GF(4)); _.<Y> = K[] # needs sage.rings.finite_rings
|
|
127
|
+
sage: L.<y> = K.extension(Y^3+x+x^3*Y) # needs sage.rings.finite_rings sage.rings.function_field
|
|
128
|
+
sage: y.differential() # needs sage.rings.finite_rings sage.rings.function_field
|
|
129
|
+
(x*y^2 + 1/x*y) d(x)
|
|
130
|
+
|
|
131
|
+
sage: F.<x> = FunctionField(QQ)
|
|
132
|
+
sage: f = 1/x
|
|
133
|
+
sage: f.differential()
|
|
134
|
+
(-1/x^2) d(x)
|
|
135
|
+
"""
|
|
136
|
+
if self._f.is_zero(): # zero differential
|
|
137
|
+
return '0'
|
|
138
|
+
|
|
139
|
+
r = 'd({})'.format(self.parent()._gen_base_differential)
|
|
140
|
+
|
|
141
|
+
if self._f.is_one():
|
|
142
|
+
return r
|
|
143
|
+
|
|
144
|
+
return '({})'.format(self._f) + ' ' + r
|
|
145
|
+
|
|
146
|
+
def _latex_(self):
|
|
147
|
+
r"""
|
|
148
|
+
Return a latex representation of the differential.
|
|
149
|
+
|
|
150
|
+
EXAMPLES::
|
|
151
|
+
|
|
152
|
+
sage: # needs sage.rings.finite_rings
|
|
153
|
+
sage: K.<x> = FunctionField(GF(4)); _.<Y> = K[]
|
|
154
|
+
sage: L.<y> = K.extension(Y^3 + x + x^3*Y) # needs sage.rings.function_field
|
|
155
|
+
sage: w = y.differential() # needs sage.rings.function_field
|
|
156
|
+
sage: latex(w) # needs sage.rings.function_field
|
|
157
|
+
\left( x y^{2} + \frac{1}{x} y \right)\, dx
|
|
158
|
+
"""
|
|
159
|
+
if self._f.is_zero(): # zero differential
|
|
160
|
+
return '0'
|
|
161
|
+
|
|
162
|
+
r = 'd{}'.format(self.parent()._gen_base_differential)
|
|
163
|
+
|
|
164
|
+
if self._f.is_one():
|
|
165
|
+
return r
|
|
166
|
+
|
|
167
|
+
return '\\left(' + latex(self._f) + '\\right)\\,' + r
|
|
168
|
+
|
|
169
|
+
def __hash__(self):
|
|
170
|
+
"""
|
|
171
|
+
Return the hash of ``self``.
|
|
172
|
+
|
|
173
|
+
EXAMPLES::
|
|
174
|
+
|
|
175
|
+
sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]
|
|
176
|
+
sage: L.<y> = K.extension(Y^3 + x + x^3*Y) # needs sage.rings.function_field
|
|
177
|
+
sage: {x.differential(): 1}
|
|
178
|
+
{d(x): 1}
|
|
179
|
+
sage: {y.differential(): 1} # needs sage.rings.function_field
|
|
180
|
+
{(x*y^2 + 1/x*y) d(x): 1}
|
|
181
|
+
"""
|
|
182
|
+
return hash((self.parent(), self._f))
|
|
183
|
+
|
|
184
|
+
def _richcmp_(self, other, op):
|
|
185
|
+
"""
|
|
186
|
+
Compare the differential and the other differential with respect to the
|
|
187
|
+
comparison operator.
|
|
188
|
+
|
|
189
|
+
INPUT:
|
|
190
|
+
|
|
191
|
+
- ``other`` -- differential
|
|
192
|
+
|
|
193
|
+
- ``op`` -- comparison operator
|
|
194
|
+
|
|
195
|
+
EXAMPLES::
|
|
196
|
+
|
|
197
|
+
sage: # needs sage.rings.finite_rings sage.rings.function_field
|
|
198
|
+
sage: K.<x> = FunctionField(GF(4)); _.<Y> = K[]
|
|
199
|
+
sage: L.<y> = K.extension(Y^3 + x + x^3*Y)
|
|
200
|
+
sage: w1 = y.differential()
|
|
201
|
+
sage: w2 = L(x).differential()
|
|
202
|
+
sage: w3 = (x*y).differential()
|
|
203
|
+
sage: w1 < w2
|
|
204
|
+
False
|
|
205
|
+
sage: w2 < w1
|
|
206
|
+
True
|
|
207
|
+
sage: w3 == x * w1 + y * w2
|
|
208
|
+
True
|
|
209
|
+
|
|
210
|
+
sage: F.<x> = FunctionField(QQ)
|
|
211
|
+
sage: w1 = ((x^2+x+1)^10).differential()
|
|
212
|
+
sage: w2 = (x^2+x+1).differential()
|
|
213
|
+
sage: w1 < w2
|
|
214
|
+
False
|
|
215
|
+
sage: w1 > w2
|
|
216
|
+
True
|
|
217
|
+
sage: w1 == 10*(x^2+x+1)^9 * w2
|
|
218
|
+
True
|
|
219
|
+
"""
|
|
220
|
+
return richcmp(self._f, other._f, op)
|
|
221
|
+
|
|
222
|
+
def _add_(self, other):
|
|
223
|
+
"""
|
|
224
|
+
Return the sum of the differential and the other differential.
|
|
225
|
+
|
|
226
|
+
INPUT:
|
|
227
|
+
|
|
228
|
+
- ``other`` -- differential
|
|
229
|
+
|
|
230
|
+
EXAMPLES::
|
|
231
|
+
|
|
232
|
+
sage: # needs sage.rings.finite_rings sage.rings.function_field
|
|
233
|
+
sage: K.<x> = FunctionField(GF(4)); _.<Y> = K[]
|
|
234
|
+
sage: L.<y> = K.extension(Y^3 + x + x^3*Y)
|
|
235
|
+
sage: w1 = y.differential()
|
|
236
|
+
sage: w2 = (1/y).differential()
|
|
237
|
+
sage: w1 + w2
|
|
238
|
+
(((x^3 + 1)/x^2)*y^2 + 1/x*y) d(x)
|
|
239
|
+
|
|
240
|
+
sage: F.<x> = FunctionField(QQ)
|
|
241
|
+
sage: w1 = (1/x).differential()
|
|
242
|
+
sage: w2 = (x^2+1).differential()
|
|
243
|
+
sage: w1 + w2
|
|
244
|
+
((2*x^3 - 1)/x^2) d(x)
|
|
245
|
+
"""
|
|
246
|
+
W = self.parent()
|
|
247
|
+
return W.element_class(W, self._f + other._f)
|
|
248
|
+
|
|
249
|
+
def _div_(self, other):
|
|
250
|
+
"""
|
|
251
|
+
Return the quotient of ``self`` and ``other``.
|
|
252
|
+
|
|
253
|
+
INPUT:
|
|
254
|
+
|
|
255
|
+
- ``other`` -- differential
|
|
256
|
+
|
|
257
|
+
OUTPUT: an element of the function field
|
|
258
|
+
|
|
259
|
+
EXAMPLES::
|
|
260
|
+
|
|
261
|
+
sage: # needs sage.rings.finite_rings sage.rings.function_field
|
|
262
|
+
sage: K.<x> = FunctionField(GF(4)); _.<Y> = K[]
|
|
263
|
+
sage: L.<y> = K.extension(Y^3 + x + x^3*Y)
|
|
264
|
+
sage: w1 = y.differential()
|
|
265
|
+
sage: w2 = (1/y).differential()
|
|
266
|
+
sage: w1 / w2
|
|
267
|
+
y^2
|
|
268
|
+
|
|
269
|
+
sage: F.<x> = FunctionField(QQ)
|
|
270
|
+
sage: w1 = (1/x).differential()
|
|
271
|
+
sage: w2 = (x^2+1).differential()
|
|
272
|
+
sage: w1 / w2
|
|
273
|
+
-1/2/x^3
|
|
274
|
+
"""
|
|
275
|
+
if other._f.is_zero():
|
|
276
|
+
raise ZeroDivisionError("division by zero differential")
|
|
277
|
+
|
|
278
|
+
return self._f / other._f
|
|
279
|
+
|
|
280
|
+
def _neg_(self):
|
|
281
|
+
"""
|
|
282
|
+
Return the negation of the differential.
|
|
283
|
+
|
|
284
|
+
EXAMPLES::
|
|
285
|
+
|
|
286
|
+
sage: # needs sage.rings.function_field
|
|
287
|
+
sage: K.<x> = FunctionField(GF(5)); _.<Y> = K[]
|
|
288
|
+
sage: L.<y> = K.extension(Y^3 + x + x^3*Y)
|
|
289
|
+
sage: w1 = y.differential()
|
|
290
|
+
sage: w2 = (-y).differential()
|
|
291
|
+
sage: -w1 == w2
|
|
292
|
+
True
|
|
293
|
+
|
|
294
|
+
sage: F.<x> = FunctionField(QQ)
|
|
295
|
+
sage: w1 = (1/x).differential()
|
|
296
|
+
sage: w2 = (-1/x).differential()
|
|
297
|
+
sage: -w1 == w2
|
|
298
|
+
True
|
|
299
|
+
"""
|
|
300
|
+
W = self.parent()
|
|
301
|
+
return W.element_class(W, -self._f)
|
|
302
|
+
|
|
303
|
+
def _rmul_(self, f):
|
|
304
|
+
"""
|
|
305
|
+
Return the differential multiplied by the element of the function
|
|
306
|
+
field.
|
|
307
|
+
|
|
308
|
+
INPUT:
|
|
309
|
+
|
|
310
|
+
- ``f`` -- element of the function field
|
|
311
|
+
|
|
312
|
+
EXAMPLES::
|
|
313
|
+
|
|
314
|
+
sage: # needs sage.rings.function_field
|
|
315
|
+
sage: K.<x> = FunctionField(GF(5)); _.<Y> = K[]
|
|
316
|
+
sage: L.<y> = K.extension(Y^3 + x + x^3*Y)
|
|
317
|
+
sage: w1 = (1/y).differential()
|
|
318
|
+
sage: w2 = (-1/y^2) * y.differential()
|
|
319
|
+
sage: w1 == w2
|
|
320
|
+
True
|
|
321
|
+
|
|
322
|
+
sage: F.<x> = FunctionField(QQ)
|
|
323
|
+
sage: w1 = (x^2*(x^2+x+1)).differential()
|
|
324
|
+
sage: w2 = (x^2).differential()
|
|
325
|
+
sage: w3 = (x^2+x+1).differential()
|
|
326
|
+
sage: w1 == (x^2) * w3 + (x^2+x+1) * w2
|
|
327
|
+
True
|
|
328
|
+
"""
|
|
329
|
+
W = self.parent()
|
|
330
|
+
return W.element_class(W, f * self._f)
|
|
331
|
+
|
|
332
|
+
def _acted_upon_(self, f, self_on_left):
|
|
333
|
+
"""
|
|
334
|
+
Define multiplication of ``self`` with an element ``f`` of a function
|
|
335
|
+
field, by coercing ``self`` to the space of differentials of the
|
|
336
|
+
function field.
|
|
337
|
+
|
|
338
|
+
INPUT:
|
|
339
|
+
|
|
340
|
+
- ``f`` -- an element of a function field
|
|
341
|
+
|
|
342
|
+
EXAMPLES::
|
|
343
|
+
|
|
344
|
+
sage: # needs sage.rings.function_field
|
|
345
|
+
sage: K.<x> = FunctionField(GF(31)); _.<Y> = K[]
|
|
346
|
+
sage: L.<y> = K.extension(Y^2 - x); _.<Z> = L[]
|
|
347
|
+
sage: M.<z> = L.extension(Z^2 - y)
|
|
348
|
+
sage: z.differential()
|
|
349
|
+
(8/x*z) d(x)
|
|
350
|
+
sage: 1/(2*z) * y.differential()
|
|
351
|
+
(8/x*z) d(x)
|
|
352
|
+
|
|
353
|
+
sage: # needs sage.rings.function_field
|
|
354
|
+
sage: z * x.differential()
|
|
355
|
+
(z) d(x)
|
|
356
|
+
sage: z * (y^2).differential()
|
|
357
|
+
(z) d(x)
|
|
358
|
+
sage: z * (z^4).differential()
|
|
359
|
+
(z) d(x)
|
|
360
|
+
|
|
361
|
+
::
|
|
362
|
+
|
|
363
|
+
sage: K.<x> = FunctionField(GF(4)); _.<Y> = K[] # needs sage.rings.finite_rings
|
|
364
|
+
sage: L.<y> = K.extension(Y^3 + x + x^3*Y) # needs sage.rings.finite_rings sage.rings.function_field
|
|
365
|
+
sage: y * x.differential() # needs sage.rings.finite_rings sage.rings.function_field
|
|
366
|
+
(y) d(x)
|
|
367
|
+
"""
|
|
368
|
+
F = f.parent()
|
|
369
|
+
if self.parent().function_field() is not F:
|
|
370
|
+
phi = F.space_of_differentials().coerce_map_from(self.parent())
|
|
371
|
+
if phi is not None:
|
|
372
|
+
return phi(self)._rmul_(f)
|
|
373
|
+
raise TypeError
|
|
374
|
+
|
|
375
|
+
def divisor(self):
|
|
376
|
+
"""
|
|
377
|
+
Return the divisor of the differential.
|
|
378
|
+
|
|
379
|
+
EXAMPLES::
|
|
380
|
+
|
|
381
|
+
sage: K.<x> = FunctionField(GF(5)); _.<Y> = K[]
|
|
382
|
+
sage: L.<y> = K.extension(Y^3 + x + x^3*Y) # needs sage.rings.function_field
|
|
383
|
+
sage: w = (1/y) * y.differential() # needs sage.rings.function_field
|
|
384
|
+
sage: w.divisor() # needs sage.rings.function_field
|
|
385
|
+
- Place (1/x, 1/x^3*y^2 + 1/x)
|
|
386
|
+
- Place (1/x, 1/x^3*y^2 + 1/x^2*y + 1)
|
|
387
|
+
- Place (x, y)
|
|
388
|
+
+ Place (x + 2, y + 3)
|
|
389
|
+
+ Place (x^6 + 3*x^5 + 4*x^4 + 2*x^3 + x^2 + 3*x + 4, y + x^5)
|
|
390
|
+
|
|
391
|
+
::
|
|
392
|
+
|
|
393
|
+
sage: F.<x> = FunctionField(QQ)
|
|
394
|
+
sage: w = (1/x).differential()
|
|
395
|
+
sage: w.divisor() # needs sage.libs.pari
|
|
396
|
+
-2*Place (x)
|
|
397
|
+
"""
|
|
398
|
+
F = self.parent().function_field()
|
|
399
|
+
x = F.base_field().gen()
|
|
400
|
+
return self._f.divisor() + (-2)*F(x).divisor_of_poles() + F.different()
|
|
401
|
+
|
|
402
|
+
def valuation(self, place):
|
|
403
|
+
"""
|
|
404
|
+
Return the valuation of the differential at the place.
|
|
405
|
+
|
|
406
|
+
INPUT:
|
|
407
|
+
|
|
408
|
+
- ``place`` -- a place of the function field
|
|
409
|
+
|
|
410
|
+
EXAMPLES::
|
|
411
|
+
|
|
412
|
+
sage: K.<x> = FunctionField(GF(5)); _.<Y> = K[]
|
|
413
|
+
sage: L.<y> = K.extension(Y^3 + x + x^3*Y) # needs sage.rings.function_field
|
|
414
|
+
sage: w = (1/y) * y.differential() # needs sage.rings.function_field
|
|
415
|
+
sage: [w.valuation(p) for p in L.places()] # needs sage.rings.function_field
|
|
416
|
+
[-1, -1, -1, 0, 1, 0]
|
|
417
|
+
"""
|
|
418
|
+
F = self.parent().function_field()
|
|
419
|
+
x = F.base_field().gen()
|
|
420
|
+
return (self._f.valuation(place) + 2*min(F(x).valuation(place), 0)
|
|
421
|
+
+ F.different().valuation(place))
|
|
422
|
+
|
|
423
|
+
def residue(self, place):
|
|
424
|
+
"""
|
|
425
|
+
Return the residue of the differential at the place.
|
|
426
|
+
|
|
427
|
+
INPUT:
|
|
428
|
+
|
|
429
|
+
- ``place`` -- a place of the function field
|
|
430
|
+
|
|
431
|
+
OUTPUT: an element of the residue field of the place
|
|
432
|
+
|
|
433
|
+
EXAMPLES:
|
|
434
|
+
|
|
435
|
+
We verify the residue theorem in a rational function field::
|
|
436
|
+
|
|
437
|
+
sage: # needs sage.rings.finite_rings
|
|
438
|
+
sage: F.<x> = FunctionField(GF(4))
|
|
439
|
+
sage: f = 0
|
|
440
|
+
sage: while f == 0:
|
|
441
|
+
....: f = F.random_element()
|
|
442
|
+
sage: w = 1/f * f.differential()
|
|
443
|
+
sage: d = f.divisor()
|
|
444
|
+
sage: s = d.support()
|
|
445
|
+
sage: sum([w.residue(p).trace() for p in s]) # needs sage.rings.function_field
|
|
446
|
+
0
|
|
447
|
+
|
|
448
|
+
and in an extension field::
|
|
449
|
+
|
|
450
|
+
sage: # needs sage.rings.function_field
|
|
451
|
+
sage: K.<x> = FunctionField(GF(7)); _.<Y> = K[]
|
|
452
|
+
sage: L.<y> = K.extension(Y^3 + x + x^3*Y)
|
|
453
|
+
sage: f = 0
|
|
454
|
+
sage: while f == 0:
|
|
455
|
+
....: f = L.random_element()
|
|
456
|
+
sage: w = 1/f * f.differential()
|
|
457
|
+
sage: d = f.divisor()
|
|
458
|
+
sage: s = d.support()
|
|
459
|
+
sage: sum([w.residue(p).trace() for p in s])
|
|
460
|
+
0
|
|
461
|
+
|
|
462
|
+
and also in a function field of characteristic zero::
|
|
463
|
+
|
|
464
|
+
sage: # needs sage.rings.function_field
|
|
465
|
+
sage: R.<x> = FunctionField(QQ)
|
|
466
|
+
sage: L.<Y> = R[]
|
|
467
|
+
sage: F.<y> = R.extension(Y^2 - x^4 - 4*x^3 - 2*x^2 - 1)
|
|
468
|
+
sage: a = 6*x^2 + 5*x + 7
|
|
469
|
+
sage: b = 2*x^6 + 8*x^5 + 3*x^4 - 4*x^3 - 1
|
|
470
|
+
sage: w = y*a/b*x.differential()
|
|
471
|
+
sage: d = w.divisor()
|
|
472
|
+
sage: sum([QQ(w.residue(p)) for p in d.support()])
|
|
473
|
+
0
|
|
474
|
+
"""
|
|
475
|
+
R,fr_R,to_R = place._residue_field()
|
|
476
|
+
|
|
477
|
+
# Step 1: compute f such that fds equals this differential.
|
|
478
|
+
s = place.local_uniformizer()
|
|
479
|
+
dxds = ~(s.derivative())
|
|
480
|
+
g = self._f * dxds
|
|
481
|
+
|
|
482
|
+
# Step 2: compute c that is the coefficient of s^-1 in
|
|
483
|
+
# the power series expansion of f
|
|
484
|
+
r = g.valuation(place)
|
|
485
|
+
if r >= 0:
|
|
486
|
+
return R.zero()
|
|
487
|
+
else:
|
|
488
|
+
g_shifted = g * s**(-r)
|
|
489
|
+
c = g_shifted.higher_derivative(-r-1, s)
|
|
490
|
+
return to_R(c)
|
|
491
|
+
|
|
492
|
+
def monomial_coefficients(self, copy=True):
|
|
493
|
+
"""
|
|
494
|
+
Return a dictionary whose keys are indices of basis elements in the
|
|
495
|
+
support of ``self`` and whose values are the corresponding coefficients.
|
|
496
|
+
|
|
497
|
+
EXAMPLES::
|
|
498
|
+
|
|
499
|
+
sage: K.<x> = FunctionField(GF(5)); _.<Y> = K[]
|
|
500
|
+
sage: L.<y> = K.extension(Y^3 + x + x^3*Y) # needs sage.rings.function_field
|
|
501
|
+
sage: d = y.differential() # needs sage.rings.function_field
|
|
502
|
+
sage: d # needs sage.rings.function_field
|
|
503
|
+
((4*x/(x^7 + 3))*y^2 + ((4*x^7 + 1)/(x^8 + 3*x))*y + x^4/(x^7 + 3)) d(x)
|
|
504
|
+
sage: d.monomial_coefficients() # needs sage.rings.function_field
|
|
505
|
+
{0: (4*x/(x^7 + 3))*y^2 + ((4*x^7 + 1)/(x^8 + 3*x))*y + x^4/(x^7 + 3)}
|
|
506
|
+
"""
|
|
507
|
+
return {0: self._f}
|
|
508
|
+
|
|
509
|
+
|
|
510
|
+
class FunctionFieldDifferential_global(FunctionFieldDifferential):
|
|
511
|
+
"""
|
|
512
|
+
Differentials on global function fields.
|
|
513
|
+
|
|
514
|
+
EXAMPLES::
|
|
515
|
+
|
|
516
|
+
sage: F.<x> = FunctionField(GF(7))
|
|
517
|
+
sage: f = x/(x^2 + x + 1)
|
|
518
|
+
sage: f.differential()
|
|
519
|
+
((6*x^2 + 1)/(x^4 + 2*x^3 + 3*x^2 + 2*x + 1)) d(x)
|
|
520
|
+
|
|
521
|
+
::
|
|
522
|
+
|
|
523
|
+
sage: K.<x> = FunctionField(GF(4)); _.<Y> = K[] # needs sage.rings.finite_rings
|
|
524
|
+
sage: L.<y> = K.extension(Y^3 + x + x^3*Y) # needs sage.rings.finite_rings sage.rings.function_field
|
|
525
|
+
sage: y.differential() # needs sage.rings.finite_rings sage.rings.function_field
|
|
526
|
+
(x*y^2 + 1/x*y) d(x)
|
|
527
|
+
"""
|
|
528
|
+
def cartier(self):
|
|
529
|
+
r"""
|
|
530
|
+
Return the image of the differential by the Cartier operator.
|
|
531
|
+
|
|
532
|
+
The Cartier operator operates on differentials. Let `x` be a separating
|
|
533
|
+
element of the function field. If a differential `\omega` is written
|
|
534
|
+
in prime-power representation
|
|
535
|
+
`\omega=(f_0^p+f_1^px+\dots+f_{p-1}^px^{p-1})dx`, then the Cartier
|
|
536
|
+
operator maps `\omega` to `f_{p-1}dx`. It is known that this definition
|
|
537
|
+
does not depend on the choice of `x`.
|
|
538
|
+
|
|
539
|
+
The Cartier operator has interesting properties. Notably, the set of
|
|
540
|
+
exact differentials is precisely the kernel of the Cartier operator and
|
|
541
|
+
logarithmic differentials are stable under the Cartier operation.
|
|
542
|
+
|
|
543
|
+
EXAMPLES::
|
|
544
|
+
|
|
545
|
+
sage: # needs sage.rings.finite_rings sage.rings.function_field
|
|
546
|
+
sage: K.<x> = FunctionField(GF(4)); _.<Y> = K[]
|
|
547
|
+
sage: L.<y> = K.extension(Y^3 + x + x^3*Y)
|
|
548
|
+
sage: f = x/y
|
|
549
|
+
sage: w = 1/f*f.differential()
|
|
550
|
+
sage: w.cartier() == w
|
|
551
|
+
True
|
|
552
|
+
|
|
553
|
+
::
|
|
554
|
+
|
|
555
|
+
sage: # needs sage.rings.finite_rings
|
|
556
|
+
sage: F.<x> = FunctionField(GF(4))
|
|
557
|
+
sage: f = x/(x^2 + x + 1)
|
|
558
|
+
sage: w = 1/f*f.differential()
|
|
559
|
+
sage: w.cartier() == w # needs sage.rings.function_field
|
|
560
|
+
True
|
|
561
|
+
"""
|
|
562
|
+
W = self.parent()
|
|
563
|
+
F = W.function_field()
|
|
564
|
+
der = F.higher_derivation()
|
|
565
|
+
power_repr = der._prime_power_representation(self._f)
|
|
566
|
+
return W.element_class(W, power_repr[-1])
|
|
567
|
+
|
|
568
|
+
|
|
569
|
+
class DifferentialsSpace(UniqueRepresentation, Parent):
|
|
570
|
+
"""
|
|
571
|
+
Space of differentials of a function field.
|
|
572
|
+
|
|
573
|
+
INPUT:
|
|
574
|
+
|
|
575
|
+
- ``field`` -- function field
|
|
576
|
+
|
|
577
|
+
EXAMPLES::
|
|
578
|
+
|
|
579
|
+
sage: K.<x> = FunctionField(GF(4)); _.<Y> = K[] # needs sage.rings.finite_rings
|
|
580
|
+
sage: L.<y> = K.extension(Y^3 + x^3*Y + x) # needs sage.rings.finite_rings sage.rings.function_field
|
|
581
|
+
sage: L.space_of_differentials() # needs sage.rings.finite_rings sage.rings.function_field
|
|
582
|
+
Space of differentials of Function field in y defined by y^3 + x^3*y + x
|
|
583
|
+
|
|
584
|
+
The space of differentials is a one-dimensional module over the function
|
|
585
|
+
field. So a base differential is chosen to represent differentials.
|
|
586
|
+
Usually the generator of the base rational function field is a separating
|
|
587
|
+
element and used to generate the base differential. Otherwise a separating
|
|
588
|
+
element is automatically found and used to generate the base differential
|
|
589
|
+
relative to which other differentials are denoted::
|
|
590
|
+
|
|
591
|
+
sage: # needs sage.rings.function_field
|
|
592
|
+
sage: K.<x> = FunctionField(GF(5))
|
|
593
|
+
sage: R.<y> = K[]
|
|
594
|
+
sage: L.<y> = K.extension(y^5 - 1/x)
|
|
595
|
+
sage: L(x).differential()
|
|
596
|
+
0
|
|
597
|
+
sage: y.differential()
|
|
598
|
+
d(y)
|
|
599
|
+
sage: (y^2).differential()
|
|
600
|
+
(2*y) d(y)
|
|
601
|
+
"""
|
|
602
|
+
Element = FunctionFieldDifferential
|
|
603
|
+
|
|
604
|
+
def __init__(self, field, category=None):
|
|
605
|
+
"""
|
|
606
|
+
Initialize the space of differentials of the function field.
|
|
607
|
+
|
|
608
|
+
TESTS::
|
|
609
|
+
|
|
610
|
+
sage: # needs sage.rings.finite_rings sage.rings.function_field
|
|
611
|
+
sage: K.<x> = FunctionField(GF(4)); _.<Y>=K[]
|
|
612
|
+
sage: L.<y> = K.extension(Y^3 + x + x^3*Y)
|
|
613
|
+
sage: W = L.space_of_differentials()
|
|
614
|
+
sage: TestSuite(W).run()
|
|
615
|
+
"""
|
|
616
|
+
Parent.__init__(self, base=field, category=Modules(field).FiniteDimensional().WithBasis().or_subcategory(category))
|
|
617
|
+
|
|
618
|
+
# Starting from the base rational function field, find the first
|
|
619
|
+
# generator x of an intermediate function field that doesn't map to zero
|
|
620
|
+
# by the derivation map and use dx as our base differential.
|
|
621
|
+
|
|
622
|
+
der = field.derivation()
|
|
623
|
+
for F in reversed(field._intermediate_fields(field.rational_function_field())):
|
|
624
|
+
if der(F.gen()) != 0:
|
|
625
|
+
break
|
|
626
|
+
|
|
627
|
+
self._derivation = der
|
|
628
|
+
self._gen_base_differential = F.gen()
|
|
629
|
+
self._gen_derivative_inv = ~der(F.gen()) # used for fast computation
|
|
630
|
+
|
|
631
|
+
def _repr_(self):
|
|
632
|
+
"""
|
|
633
|
+
Return the string representation of the space of differentials.
|
|
634
|
+
|
|
635
|
+
EXAMPLES::
|
|
636
|
+
|
|
637
|
+
sage: # needs sage.rings.finite_rings sage.rings.function_field
|
|
638
|
+
sage: K.<x> = FunctionField(GF(4)); _.<Y> = K[]
|
|
639
|
+
sage: L.<y> = K.extension(Y^3 + x + x^3*Y)
|
|
640
|
+
sage: w = y.differential()
|
|
641
|
+
sage: w.parent()
|
|
642
|
+
Space of differentials of Function field in y defined by y^3 + x^3*y + x
|
|
643
|
+
"""
|
|
644
|
+
return "Space of differentials of {}".format(self.base())
|
|
645
|
+
|
|
646
|
+
def _element_constructor_(self, f):
|
|
647
|
+
"""
|
|
648
|
+
Construct differential `df` in the space from `f`.
|
|
649
|
+
|
|
650
|
+
INPUT:
|
|
651
|
+
|
|
652
|
+
- ``f`` -- element of the function field
|
|
653
|
+
|
|
654
|
+
EXAMPLES::
|
|
655
|
+
|
|
656
|
+
sage: # needs sage.rings.finite_rings sage.rings.function_field
|
|
657
|
+
sage: K.<x> = FunctionField(GF(4)); _.<Y> = K[]
|
|
658
|
+
sage: L.<y> = K.extension(Y^3 + x + x^3*Y)
|
|
659
|
+
sage: S = L.space_of_differentials()
|
|
660
|
+
sage: S(y)
|
|
661
|
+
(x*y^2 + 1/x*y) d(x)
|
|
662
|
+
sage: S(y) in S
|
|
663
|
+
True
|
|
664
|
+
sage: S(1)
|
|
665
|
+
0
|
|
666
|
+
"""
|
|
667
|
+
if f in self.base():
|
|
668
|
+
return self.element_class(self, self.base().one(), f)
|
|
669
|
+
|
|
670
|
+
raise ValueError
|
|
671
|
+
|
|
672
|
+
def _coerce_map_from_(self, S):
|
|
673
|
+
"""
|
|
674
|
+
Define coercions.
|
|
675
|
+
|
|
676
|
+
We can coerce from any DifferentialsSpace whose underlying field
|
|
677
|
+
can be coerced into our underlying field.
|
|
678
|
+
|
|
679
|
+
EXAMPLES::
|
|
680
|
+
|
|
681
|
+
sage: K.<x> = FunctionField(QQ); R.<y> = K[]
|
|
682
|
+
sage: L.<y> = K.extension(y^2 - x*y + 4*x^3) # needs sage.rings.function_field
|
|
683
|
+
sage: L.space_of_differentials().coerce_map_from(K.space_of_differentials()) # needs sage.rings.function_field
|
|
684
|
+
Inclusion morphism:
|
|
685
|
+
From: Space of differentials of Rational function field in x over Rational Field
|
|
686
|
+
To: Space of differentials of Function field in y defined by y^2 - x*y + 4*x^3
|
|
687
|
+
"""
|
|
688
|
+
if isinstance(S, DifferentialsSpace):
|
|
689
|
+
if self.function_field().has_coerce_map_from(S.function_field()):
|
|
690
|
+
return DifferentialsSpaceInclusion(S, self)
|
|
691
|
+
|
|
692
|
+
def function_field(self):
|
|
693
|
+
"""
|
|
694
|
+
Return the function field to which the space of differentials
|
|
695
|
+
is attached.
|
|
696
|
+
|
|
697
|
+
EXAMPLES::
|
|
698
|
+
|
|
699
|
+
sage: # needs sage.rings.finite_rings sage.rings.function_field
|
|
700
|
+
sage: K.<x> = FunctionField(GF(4)); _.<Y> = K[]
|
|
701
|
+
sage: L.<y> = K.extension(Y^3 + x^3*Y + x)
|
|
702
|
+
sage: S = L.space_of_differentials()
|
|
703
|
+
sage: S.function_field()
|
|
704
|
+
Function field in y defined by y^3 + x^3*y + x
|
|
705
|
+
"""
|
|
706
|
+
return self.base()
|
|
707
|
+
|
|
708
|
+
def _an_element_(self):
|
|
709
|
+
"""
|
|
710
|
+
Return a differential.
|
|
711
|
+
|
|
712
|
+
EXAMPLES::
|
|
713
|
+
|
|
714
|
+
sage: # needs sage.rings.finite_rings sage.rings.function_field
|
|
715
|
+
sage: K.<x> = FunctionField(GF(4)); _.<Y> = K[]
|
|
716
|
+
sage: L.<y> = K.extension(Y^3 + x + x^3*Y)
|
|
717
|
+
sage: S = L.space_of_differentials()
|
|
718
|
+
sage: S.an_element() # random
|
|
719
|
+
(x*y^2 + 1/x*y) d(x)
|
|
720
|
+
"""
|
|
721
|
+
F = self.base()
|
|
722
|
+
return self.element_class(self, F.one(), F.an_element())
|
|
723
|
+
|
|
724
|
+
def basis(self):
|
|
725
|
+
"""
|
|
726
|
+
Return a basis.
|
|
727
|
+
|
|
728
|
+
EXAMPLES::
|
|
729
|
+
|
|
730
|
+
sage: # needs sage.rings.finite_rings sage.rings.function_field
|
|
731
|
+
sage: K.<x> = FunctionField(GF(4)); _.<Y> = K[]
|
|
732
|
+
sage: L.<y> = K.extension(Y^3 + x^3*Y + x)
|
|
733
|
+
sage: S = L.space_of_differentials()
|
|
734
|
+
sage: S.basis()
|
|
735
|
+
Family (d(x),)
|
|
736
|
+
"""
|
|
737
|
+
return Family([self.element_class(self, self.base().one())])
|
|
738
|
+
|
|
739
|
+
|
|
740
|
+
class DifferentialsSpace_global(DifferentialsSpace):
|
|
741
|
+
"""
|
|
742
|
+
Space of differentials of a global function field.
|
|
743
|
+
|
|
744
|
+
INPUT:
|
|
745
|
+
|
|
746
|
+
- ``field`` -- function field
|
|
747
|
+
|
|
748
|
+
EXAMPLES::
|
|
749
|
+
|
|
750
|
+
sage: K.<x> = FunctionField(GF(4)); _.<Y> = K[] # needs sage.rings.finite_rings
|
|
751
|
+
sage: L.<y> = K.extension(Y^3 + x^3*Y + x) # needs sage.rings.finite_rings sage.rings.function_field
|
|
752
|
+
sage: L.space_of_differentials() # needs sage.rings.finite_rings sage.rings.function_field
|
|
753
|
+
Space of differentials of Function field in y defined by y^3 + x^3*y + x
|
|
754
|
+
"""
|
|
755
|
+
Element = FunctionFieldDifferential_global
|
|
756
|
+
|
|
757
|
+
|
|
758
|
+
class DifferentialsSpaceInclusion(Morphism):
|
|
759
|
+
"""
|
|
760
|
+
Inclusion morphisms for extensions of function fields.
|
|
761
|
+
|
|
762
|
+
EXAMPLES::
|
|
763
|
+
|
|
764
|
+
sage: K.<x> = FunctionField(QQ); R.<y> = K[]
|
|
765
|
+
sage: L.<y> = K.extension(y^2 - x*y + 4*x^3) # needs sage.rings.function_field
|
|
766
|
+
sage: OK = K.space_of_differentials()
|
|
767
|
+
sage: OL = L.space_of_differentials() # needs sage.rings.function_field
|
|
768
|
+
sage: OL.coerce_map_from(OK) # needs sage.rings.function_field
|
|
769
|
+
Inclusion morphism:
|
|
770
|
+
From: Space of differentials of Rational function field in x over Rational Field
|
|
771
|
+
To: Space of differentials of Function field in y defined by y^2 - x*y + 4*x^3
|
|
772
|
+
"""
|
|
773
|
+
|
|
774
|
+
def _repr_(self):
|
|
775
|
+
"""
|
|
776
|
+
Return the string representation of this morphism.
|
|
777
|
+
|
|
778
|
+
EXAMPLES::
|
|
779
|
+
|
|
780
|
+
sage: K.<x> = FunctionField(QQ); R.<y> = K[]
|
|
781
|
+
sage: L.<y> = K.extension(y^2 - x*y + 4*x^3) # needs sage.rings.function_field
|
|
782
|
+
sage: OK = K.space_of_differentials()
|
|
783
|
+
sage: OL = L.space_of_differentials() # needs sage.rings.function_field
|
|
784
|
+
sage: OL.coerce_map_from(OK) # needs sage.rings.function_field
|
|
785
|
+
Inclusion morphism:
|
|
786
|
+
From: Space of differentials of Rational function field in x over Rational Field
|
|
787
|
+
To: Space of differentials of Function field in y defined by y^2 - x*y + 4*x^3
|
|
788
|
+
"""
|
|
789
|
+
s = "Inclusion morphism:"
|
|
790
|
+
s += "\n From: {}".format(self.domain())
|
|
791
|
+
s += "\n To: {}".format(self.codomain())
|
|
792
|
+
return s
|
|
793
|
+
|
|
794
|
+
def is_injective(self):
|
|
795
|
+
"""
|
|
796
|
+
Return ``True``, since the inclusion morphism is injective.
|
|
797
|
+
|
|
798
|
+
EXAMPLES::
|
|
799
|
+
|
|
800
|
+
sage: K.<x> = FunctionField(QQ); R.<y> = K[]
|
|
801
|
+
sage: L.<y> = K.extension(y^2 - x*y + 4*x^3) # needs sage.rings.function_field
|
|
802
|
+
sage: OK = K.space_of_differentials()
|
|
803
|
+
sage: OL = L.space_of_differentials() # needs sage.rings.function_field
|
|
804
|
+
sage: OL.coerce_map_from(OK).is_injective() # needs sage.rings.function_field
|
|
805
|
+
True
|
|
806
|
+
"""
|
|
807
|
+
return True
|
|
808
|
+
|
|
809
|
+
def is_surjective(self):
|
|
810
|
+
"""
|
|
811
|
+
Return ``True`` if the inclusion morphism is surjective.
|
|
812
|
+
|
|
813
|
+
EXAMPLES::
|
|
814
|
+
|
|
815
|
+
sage: # needs sage.rings.function_field
|
|
816
|
+
sage: K.<x> = FunctionField(QQ); R.<y> = K[]
|
|
817
|
+
sage: L.<y> = K.extension(y^2 - x*y + 4*x^3)
|
|
818
|
+
sage: OK = K.space_of_differentials()
|
|
819
|
+
sage: OL = L.space_of_differentials()
|
|
820
|
+
sage: OL.coerce_map_from(OK).is_surjective()
|
|
821
|
+
False
|
|
822
|
+
sage: S.<z> = L[]
|
|
823
|
+
sage: M.<z> = L.extension(z - 1)
|
|
824
|
+
sage: OM = M.space_of_differentials()
|
|
825
|
+
sage: OM.coerce_map_from(OL).is_surjective()
|
|
826
|
+
True
|
|
827
|
+
"""
|
|
828
|
+
K = self.domain().function_field()
|
|
829
|
+
L = self.codomain().function_field()
|
|
830
|
+
return L.degree(K) == 1
|
|
831
|
+
|
|
832
|
+
def _call_(self, v):
|
|
833
|
+
"""
|
|
834
|
+
Map ``v`` to a differential in the codomain.
|
|
835
|
+
|
|
836
|
+
INPUT:
|
|
837
|
+
|
|
838
|
+
- ``v`` -- a differential in the domain
|
|
839
|
+
|
|
840
|
+
EXAMPLES::
|
|
841
|
+
|
|
842
|
+
sage: # needs sage.rings.function_field sage.rings.number_field
|
|
843
|
+
sage: K.<x> = FunctionField(QQbar); _.<Y> = K[]
|
|
844
|
+
sage: L.<y> = K.extension(Y^2 - x*Y + 4*x^3)
|
|
845
|
+
sage: OK = K.space_of_differentials()
|
|
846
|
+
sage: OL = L.space_of_differentials()
|
|
847
|
+
sage: mor = OL.coerce_map_from(OK)
|
|
848
|
+
sage: mor(x.differential()).parent()
|
|
849
|
+
Space of differentials of Function field in y defined by y^2 - x*y + 4*x^3
|
|
850
|
+
"""
|
|
851
|
+
domain = self.domain()
|
|
852
|
+
F = self.codomain().function_field()
|
|
853
|
+
return F(v._f)*F(domain._gen_base_differential).differential()
|