passagemath-modules 10.6.31rc3__cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_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.31rc3.dist-info/METADATA +281 -0
- passagemath_modules-10.6.31rc3.dist-info/RECORD +807 -0
- passagemath_modules-10.6.31rc3.dist-info/WHEEL +6 -0
- passagemath_modules-10.6.31rc3.dist-info/top_level.txt +2 -0
- passagemath_modules.libs/libgfortran-83c28eba.so.5.0.0 +0 -0
- passagemath_modules.libs/libgmp-6e109695.so.10.5.0 +0 -0
- passagemath_modules.libs/libgsl-cda90e79.so.28.0.0 +0 -0
- passagemath_modules.libs/libmpc-7f678fcf.so.3.3.1 +0 -0
- passagemath_modules.libs/libmpfr-82690d50.so.6.2.1 +0 -0
- passagemath_modules.libs/libopenblasp-r0-6dcb67f9.3.29.so +0 -0
- passagemath_modules.libs/libquadmath-2284e583.so.0.0.0 +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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.so +0 -0
- sage/calculus/integration.pyx +698 -0
- sage/calculus/interpolation.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/calculus/interpolation.pxd +13 -0
- sage/calculus/interpolation.pyx +387 -0
- sage/calculus/interpolators.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/calculus/interpolators.pyx +326 -0
- sage/calculus/ode.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/calculus/ode.pxd +5 -0
- sage/calculus/ode.pyx +610 -0
- sage/calculus/riemann.cpython-314-x86_64-linux-gnu.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-x86_64-linux-gnu.so +0 -0
- sage/calculus/transforms/dwt.pxd +7 -0
- sage/calculus/transforms/dwt.pyx +160 -0
- sage/calculus/transforms/fft.cpython-314-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.so +0 -0
- sage/libs/mpmath/utils.pxd +4 -0
- sage/libs/mpmath/utils.pyx +319 -0
- sage/matrix/action.cpython-314-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.so +0 -0
- sage/matrix/constructor.pyx +750 -0
- sage/matrix/docs.py +430 -0
- sage/matrix/echelon_matrix.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matrix/echelon_matrix.pyx +155 -0
- sage/matrix/matrix.pxd +2 -0
- sage/matrix/matrix0.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matrix/matrix0.pxd +68 -0
- sage/matrix/matrix0.pyx +6324 -0
- sage/matrix/matrix1.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matrix/matrix1.pxd +8 -0
- sage/matrix/matrix1.pyx +2851 -0
- sage/matrix/matrix2.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matrix/matrix2.pxd +25 -0
- sage/matrix/matrix2.pyx +20181 -0
- sage/matrix/matrix_cdv.cpython-314-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.so +0 -0
- sage/matrix/matrix_sparse.pxd +5 -0
- sage/matrix/matrix_sparse.pyx +1222 -0
- sage/matrix/matrix_window.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matrix/matrix_window.pxd +37 -0
- sage/matrix/matrix_window.pyx +242 -0
- sage/matrix/misc_mpfr.cpython-314-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.so +0 -0
- sage/matroids/extension.pxd +34 -0
- sage/matroids/extension.pyx +519 -0
- sage/matroids/flats_matroid.cpython-314-x86_64-linux-gnu.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-x86_64-linux-gnu.so +0 -0
- sage/matroids/graphic_matroid.pxd +39 -0
- sage/matroids/graphic_matroid.pyx +2024 -0
- sage/matroids/lean_matrix.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matroids/lean_matrix.pxd +126 -0
- sage/matroids/lean_matrix.pyx +3667 -0
- sage/matroids/linear_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matroids/linear_matroid.pxd +180 -0
- sage/matroids/linear_matroid.pyx +6649 -0
- sage/matroids/matroid.cpython-314-x86_64-linux-gnu.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-x86_64-linux-gnu.so +0 -0
- sage/matroids/set_system.pxd +38 -0
- sage/matroids/set_system.pyx +800 -0
- sage/matroids/transversal_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matroids/transversal_matroid.pxd +14 -0
- sage/matroids/transversal_matroid.pyx +893 -0
- sage/matroids/union_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matroids/union_matroid.pxd +20 -0
- sage/matroids/union_matroid.pyx +331 -0
- sage/matroids/unpickling.cpython-314-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.so +0 -0
- sage/rings/complex_conversion.pxd +8 -0
- sage/rings/complex_conversion.pyx +23 -0
- sage/rings/complex_double.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/rings/complex_double.pxd +21 -0
- sage/rings/complex_double.pyx +2654 -0
- sage/rings/complex_mpc.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/rings/complex_mpc.pxd +21 -0
- sage/rings/complex_mpc.pyx +2576 -0
- sage/rings/complex_mpfr.cpython-314-x86_64-linux-gnu.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-x86_64-linux-gnu.so +0 -0
- sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
- sage/rings/function_field/khuri_makdisi.cpython-314-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.so +0 -0
- sage/rings/real_mpfr.pxd +29 -0
- sage/rings/real_mpfr.pyx +6122 -0
- sage/rings/ring_extension.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/rings/ring_extension.pxd +42 -0
- sage/rings/ring_extension.pyx +2779 -0
- sage/rings/ring_extension_conversion.cpython-314-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.so +0 -0
- sage/stats/hmm/chmm.pyx +1595 -0
- sage/stats/hmm/distributions.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/stats/hmm/distributions.pxd +29 -0
- sage/stats/hmm/distributions.pyx +531 -0
- sage/stats/hmm/hmm.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/stats/hmm/hmm.pxd +17 -0
- sage/stats/hmm/hmm.pyx +1388 -0
- sage/stats/hmm/util.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/stats/hmm/util.pxd +7 -0
- sage/stats/hmm/util.pyx +165 -0
- sage/stats/intlist.cpython-314-x86_64-linux-gnu.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-x86_64-linux-gnu.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,346 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
# sage.doctest: needs sage.combinat
|
|
3
|
+
r"""
|
|
4
|
+
Elements of finitely presented graded modules
|
|
5
|
+
|
|
6
|
+
AUTHORS:
|
|
7
|
+
|
|
8
|
+
- Robert R. Bruner, Michael J. Catanzaro (2012): Initial version.
|
|
9
|
+
- Sverre Lunoee--Nielsen and Koen van Woerden (2019-11-29): Updated the
|
|
10
|
+
original software to Sage version 8.9.
|
|
11
|
+
- Sverre Lunoee--Nielsen (2020-07-01): Refactored the code and added
|
|
12
|
+
new documentation and tests.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
# *****************************************************************************
|
|
16
|
+
# Copyright (C) 2011 Robert R. Bruner <rrb@math.wayne.edu> and
|
|
17
|
+
# Michael J. Catanzaro <mike@math.wayne.edu>
|
|
18
|
+
#
|
|
19
|
+
# This program is free software: you can redistribute it and/or modify
|
|
20
|
+
# it under the terms of the GNU General Public License as published by
|
|
21
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
22
|
+
# (at your option) any later version.
|
|
23
|
+
# https://www.gnu.org/licenses/
|
|
24
|
+
# ****************************************************************************
|
|
25
|
+
|
|
26
|
+
from sage.misc.cachefunc import cached_method
|
|
27
|
+
from sage.modules.with_basis.indexed_element import IndexedFreeModuleElement
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class FPElement(IndexedFreeModuleElement):
|
|
31
|
+
r"""
|
|
32
|
+
A module element of a finitely presented graded module over
|
|
33
|
+
a connected graded algebra.
|
|
34
|
+
|
|
35
|
+
TESTS::
|
|
36
|
+
|
|
37
|
+
sage: from sage.modules.fp_graded.module import FPModule
|
|
38
|
+
sage: FPModule(SteenrodAlgebra(2), [0])([Sq(2)])
|
|
39
|
+
Sq(2)*g[0]
|
|
40
|
+
"""
|
|
41
|
+
|
|
42
|
+
def lift_to_free(self):
|
|
43
|
+
r"""
|
|
44
|
+
Return the lift of ``self`` to the free module ``F``,
|
|
45
|
+
where ``self`` is in a quotient of ``F``.
|
|
46
|
+
|
|
47
|
+
EXAMPLES::
|
|
48
|
+
|
|
49
|
+
sage: from sage.modules.fp_graded.module import FPModule
|
|
50
|
+
sage: M = FPModule(SteenrodAlgebra(2), [0,1], [[Sq(4), Sq(3)]])
|
|
51
|
+
sage: x = M([Sq(1), 1])
|
|
52
|
+
sage: x
|
|
53
|
+
Sq(1)*g[0] + g[1]
|
|
54
|
+
sage: x.parent()
|
|
55
|
+
Finitely presented left module on 2 generators and 1 relation over mod 2 Steenrod algebra, milnor basis
|
|
56
|
+
sage: x.lift_to_free()
|
|
57
|
+
Sq(1)*g[0] + g[1]
|
|
58
|
+
sage: x.lift_to_free().parent()
|
|
59
|
+
Free graded left module on 2 generators over mod 2 Steenrod algebra, milnor basis
|
|
60
|
+
"""
|
|
61
|
+
C = self.parent()._j.codomain()
|
|
62
|
+
return C(self.dense_coefficient_list())
|
|
63
|
+
|
|
64
|
+
@cached_method
|
|
65
|
+
def degree(self):
|
|
66
|
+
r"""
|
|
67
|
+
The degree of ``self``.
|
|
68
|
+
|
|
69
|
+
OUTPUT: the integer degree of ``self`` or raise an error if the zero element
|
|
70
|
+
|
|
71
|
+
EXAMPLES::
|
|
72
|
+
|
|
73
|
+
sage: from sage.modules.fp_graded.module import FPModule
|
|
74
|
+
sage: M = FPModule(SteenrodAlgebra(2), [0,1], [[Sq(4), Sq(3)]])
|
|
75
|
+
sage: x = M.an_element(7)
|
|
76
|
+
|
|
77
|
+
sage: x
|
|
78
|
+
Sq(0,0,1)*g[0] + Sq(3,1)*g[1]
|
|
79
|
+
sage: x.degree()
|
|
80
|
+
7
|
|
81
|
+
|
|
82
|
+
The zero element has no degree::
|
|
83
|
+
|
|
84
|
+
sage: (x-x).degree()
|
|
85
|
+
Traceback (most recent call last):
|
|
86
|
+
...
|
|
87
|
+
ValueError: the zero element does not have a well-defined degree
|
|
88
|
+
|
|
89
|
+
TESTS::
|
|
90
|
+
|
|
91
|
+
sage: N = FPModule(SteenrodAlgebra(2), [0], [[Sq(2)]])
|
|
92
|
+
sage: y = Sq(2)*N.generator(0)
|
|
93
|
+
sage: y == 0
|
|
94
|
+
True
|
|
95
|
+
sage: y.degree()
|
|
96
|
+
Traceback (most recent call last):
|
|
97
|
+
...
|
|
98
|
+
ValueError: the zero element does not have a well-defined degree
|
|
99
|
+
|
|
100
|
+
Testing that the order of the coefficients agrees with the
|
|
101
|
+
order of the generators::
|
|
102
|
+
|
|
103
|
+
sage: F.<x,y> = FPModule(SteenrodAlgebra(), (2, 0))
|
|
104
|
+
sage: x.degree()
|
|
105
|
+
2
|
|
106
|
+
sage: y.degree()
|
|
107
|
+
0
|
|
108
|
+
"""
|
|
109
|
+
if self.is_zero():
|
|
110
|
+
raise ValueError("the zero element does not have a well-defined degree")
|
|
111
|
+
return self.lift_to_free().degree()
|
|
112
|
+
|
|
113
|
+
def dense_coefficient_list(self, order=None):
|
|
114
|
+
"""
|
|
115
|
+
Return a list of all coefficients of ``self``.
|
|
116
|
+
|
|
117
|
+
INPUT:
|
|
118
|
+
|
|
119
|
+
- ``order`` -- (optional) an ordering of the basis indexing set
|
|
120
|
+
|
|
121
|
+
Note that this includes *all* of the coefficients, not just
|
|
122
|
+
the nonzero ones. By default they appear in the same order as
|
|
123
|
+
the module generators.
|
|
124
|
+
|
|
125
|
+
EXAMPLES::
|
|
126
|
+
|
|
127
|
+
sage: from sage.modules.fp_graded.module import FPModule
|
|
128
|
+
sage: A = SteenrodAlgebra()
|
|
129
|
+
sage: M = FPModule(SteenrodAlgebra(2), [0,1], [[Sq(4), Sq(3)]])
|
|
130
|
+
sage: x = M([Sq(1), 1])
|
|
131
|
+
sage: x.dense_coefficient_list()
|
|
132
|
+
[Sq(1), 1]
|
|
133
|
+
sage: y = Sq(2) * M.generator(1)
|
|
134
|
+
sage: y.dense_coefficient_list()
|
|
135
|
+
[0, Sq(2)]
|
|
136
|
+
"""
|
|
137
|
+
if order is None:
|
|
138
|
+
order = self.parent()._indices
|
|
139
|
+
return [self[i] for i in order]
|
|
140
|
+
|
|
141
|
+
def _lmul_(self, a):
|
|
142
|
+
r"""
|
|
143
|
+
Act by left multiplication on this element by ``a``.
|
|
144
|
+
|
|
145
|
+
INPUT:
|
|
146
|
+
|
|
147
|
+
- ``a`` -- an element of the algebra the parent module is defined over
|
|
148
|
+
|
|
149
|
+
OUTPUT: the module element `a \cdot x` where `x` is ``self``
|
|
150
|
+
|
|
151
|
+
EXAMPLES::
|
|
152
|
+
|
|
153
|
+
sage: from sage.modules.fp_graded.module import FPModule
|
|
154
|
+
sage: A2 = SteenrodAlgebra(2, profile=(3,2,1))
|
|
155
|
+
sage: M = FPModule(A2, [0,3], [[Sq(2)*Sq(4), Sq(3)]])
|
|
156
|
+
sage: A2.Sq(2)*M.generator(1)
|
|
157
|
+
Sq(2)*g[3]
|
|
158
|
+
sage: A2.Sq(2)*(A2.Sq(1)*A2.Sq(2)*M.generator(0) + M.generator(1))
|
|
159
|
+
Sq(2,1)*g[0] + Sq(2)*g[3]
|
|
160
|
+
|
|
161
|
+
TESTS::
|
|
162
|
+
|
|
163
|
+
sage: elements = [M.an_element(n) for n in range(1,10)]
|
|
164
|
+
sage: a = A2.Sq(3)
|
|
165
|
+
sage: [a*x for x in elements]
|
|
166
|
+
[Sq(1,1)*g[0],
|
|
167
|
+
0,
|
|
168
|
+
Sq(3,1)*g[0] + Sq(3)*g[3],
|
|
169
|
+
Sq(1,1)*g[3],
|
|
170
|
+
0,
|
|
171
|
+
Sq(3,2)*g[0] + Sq(3,1)*g[3],
|
|
172
|
+
Sq(3,0,1)*g[0] + Sq(7)*g[3],
|
|
173
|
+
Sq(1,1,1)*g[0] + Sq(5,1)*g[3],
|
|
174
|
+
Sq(3,2)*g[3]]
|
|
175
|
+
"""
|
|
176
|
+
return self.parent()(a * self.lift_to_free())
|
|
177
|
+
|
|
178
|
+
def vector_presentation(self):
|
|
179
|
+
r"""
|
|
180
|
+
A coordinate vector representing ``self`` when it is nonzero.
|
|
181
|
+
|
|
182
|
+
These are coordinates with respect to the basis chosen by
|
|
183
|
+
:meth:`~sage.modules.fp_graded.module.FPModule.basis_elements`.
|
|
184
|
+
When the element is zero, it has no well defined degree, and this
|
|
185
|
+
function returns ``None``.
|
|
186
|
+
|
|
187
|
+
OUTPUT:
|
|
188
|
+
|
|
189
|
+
A vector of elements in the ground ring of the algebra for
|
|
190
|
+
this module when this element is nonzero. Otherwise, the
|
|
191
|
+
value ``None``.
|
|
192
|
+
|
|
193
|
+
.. SEEALSO::
|
|
194
|
+
|
|
195
|
+
* :meth:`sage.modules.fp_graded.module.FPModule.vector_presentation`
|
|
196
|
+
* :meth:`sage.modules.fp_graded.module.FPModule.basis_elements`
|
|
197
|
+
* :meth:`sage.modules.fp_graded.module.FPModule.element_from_coordinates`
|
|
198
|
+
|
|
199
|
+
EXAMPLES::
|
|
200
|
+
|
|
201
|
+
sage: from sage.modules.fp_graded.module import FPModule
|
|
202
|
+
sage: A2 = SteenrodAlgebra(2, profile=(3,2,1))
|
|
203
|
+
sage: M.<m0,m1> = FPModule(A2, (0,1))
|
|
204
|
+
|
|
205
|
+
sage: x = M.an_element(7)
|
|
206
|
+
sage: v = x.vector_presentation(); v
|
|
207
|
+
(1, 0, 0, 0, 0, 1, 0)
|
|
208
|
+
sage: type(v) # needs sage.libs.m4ri
|
|
209
|
+
<class 'sage.modules.vector_mod2_dense.Vector_mod2_dense'>
|
|
210
|
+
|
|
211
|
+
sage: V = M.vector_presentation(7)
|
|
212
|
+
sage: v in V
|
|
213
|
+
True
|
|
214
|
+
|
|
215
|
+
sage: M.element_from_coordinates(v, 7) == x
|
|
216
|
+
True
|
|
217
|
+
|
|
218
|
+
We can use the basis for the module elements in the degree of `x`,
|
|
219
|
+
together with the coefficients `v` to recreate the element `x`::
|
|
220
|
+
|
|
221
|
+
sage: basis = M.basis_elements(7)
|
|
222
|
+
sage: x_ = sum( [c*b for (c,b) in zip(v, basis)] ); x_
|
|
223
|
+
Sq(0,0,1)*m0 + Sq(3,1)*m1
|
|
224
|
+
sage: x__ = M.linear_combination(zip(basis, v)); x__
|
|
225
|
+
Sq(0,0,1)*m0 + Sq(3,1)*m1
|
|
226
|
+
sage: x == x_ == x__
|
|
227
|
+
True
|
|
228
|
+
|
|
229
|
+
TESTS::
|
|
230
|
+
|
|
231
|
+
sage: M.zero().vector_presentation() is None
|
|
232
|
+
True
|
|
233
|
+
"""
|
|
234
|
+
# We cannot represent the zero element since it does not have a degree,
|
|
235
|
+
# and we therefore do not know which free module it belongs to.
|
|
236
|
+
#
|
|
237
|
+
# In this case, we could return the integer value 0 since coercion would
|
|
238
|
+
# place it inside any free module. However, this will not work for
|
|
239
|
+
# homomorphisms, so we return None to be consistent.
|
|
240
|
+
try:
|
|
241
|
+
degree = self.lift_to_free().degree()
|
|
242
|
+
except ValueError:
|
|
243
|
+
return None
|
|
244
|
+
|
|
245
|
+
F_n = self.parent().vector_presentation(degree)
|
|
246
|
+
return F_n.quotient_map()(self.lift_to_free().vector_presentation())
|
|
247
|
+
|
|
248
|
+
def __bool__(self):
|
|
249
|
+
r"""
|
|
250
|
+
Determine if this element is nonzero.
|
|
251
|
+
|
|
252
|
+
OUTPUT:
|
|
253
|
+
|
|
254
|
+
The boolean value ``True`` if this element is nonzero
|
|
255
|
+
and ``False`` otherwise.
|
|
256
|
+
|
|
257
|
+
EXAMPLES::
|
|
258
|
+
|
|
259
|
+
sage: from sage.modules.fp_graded.module import FPModule
|
|
260
|
+
sage: M = FPModule(SteenrodAlgebra(2), [0,2,4], [[Sq(4),Sq(2),0]])
|
|
261
|
+
sage: M(0) != 0
|
|
262
|
+
False
|
|
263
|
+
sage: M((Sq(6), 0, Sq(2))) == 0
|
|
264
|
+
False
|
|
265
|
+
sage: a = M((Sq(1)*Sq(2)*Sq(1)*Sq(4), 0, 0))
|
|
266
|
+
sage: b = M((0, Sq(2)*Sq(2)*Sq(2), 0))
|
|
267
|
+
sage: a != 0
|
|
268
|
+
True
|
|
269
|
+
sage: bool(b)
|
|
270
|
+
True
|
|
271
|
+
sage: bool(a + b)
|
|
272
|
+
False
|
|
273
|
+
"""
|
|
274
|
+
pres = self.vector_presentation()
|
|
275
|
+
if pres is None:
|
|
276
|
+
return False
|
|
277
|
+
return bool(pres)
|
|
278
|
+
|
|
279
|
+
def __eq__(self, other):
|
|
280
|
+
r"""
|
|
281
|
+
``True`` iff ``self`` and ``other`` are equal.
|
|
282
|
+
|
|
283
|
+
EXAMPLES::
|
|
284
|
+
|
|
285
|
+
sage: from sage.modules.fp_graded.module import FPModule
|
|
286
|
+
sage: M = FPModule(SteenrodAlgebra(2), [0,1], [[Sq(4), Sq(3)]])
|
|
287
|
+
sage: x = M([Sq(1), 1])
|
|
288
|
+
sage: x
|
|
289
|
+
Sq(1)*g[0] + g[1]
|
|
290
|
+
sage: x == x
|
|
291
|
+
True
|
|
292
|
+
sage: x == M.zero()
|
|
293
|
+
False
|
|
294
|
+
sage: x-x == M.zero()
|
|
295
|
+
True
|
|
296
|
+
sage: x != x
|
|
297
|
+
False
|
|
298
|
+
|
|
299
|
+
Comparing elements in different modules::
|
|
300
|
+
|
|
301
|
+
sage: x = Sq(2) * M.generator(0)
|
|
302
|
+
sage: N = FPModule(SteenrodAlgebra(2), [0], [[Sq(2)]])
|
|
303
|
+
sage: y = Sq(2) * N.generator(0)
|
|
304
|
+
sage: x == y
|
|
305
|
+
False
|
|
306
|
+
sage: x != y
|
|
307
|
+
True
|
|
308
|
+
"""
|
|
309
|
+
try:
|
|
310
|
+
return (self - other).is_zero()
|
|
311
|
+
except TypeError:
|
|
312
|
+
return False
|
|
313
|
+
|
|
314
|
+
def normalize(self):
|
|
315
|
+
r"""
|
|
316
|
+
A normalized form of ``self``.
|
|
317
|
+
|
|
318
|
+
OUTPUT:
|
|
319
|
+
|
|
320
|
+
An instance representing the same module element as ``self`` in
|
|
321
|
+
normalized form.
|
|
322
|
+
|
|
323
|
+
EXAMPLES::
|
|
324
|
+
|
|
325
|
+
sage: from sage.modules.fp_graded.module import FPModule
|
|
326
|
+
sage: M.<a0,b2,c4> = FPModule(SteenrodAlgebra(2), [0,2,4], [[Sq(4),Sq(2),0]])
|
|
327
|
+
|
|
328
|
+
sage: m = M((Sq(6), 0, Sq(2))); m
|
|
329
|
+
Sq(6)*a0 + Sq(2)*c4
|
|
330
|
+
sage: m.normalize()
|
|
331
|
+
Sq(6)*a0 + Sq(2)*c4
|
|
332
|
+
sage: m == m.normalize()
|
|
333
|
+
True
|
|
334
|
+
|
|
335
|
+
sage: n = M((Sq(4), Sq(2), 0)); n
|
|
336
|
+
Sq(4)*a0 + Sq(2)*b2
|
|
337
|
+
sage: n.normalize()
|
|
338
|
+
0
|
|
339
|
+
sage: n == n.normalize()
|
|
340
|
+
True
|
|
341
|
+
"""
|
|
342
|
+
if self.is_zero():
|
|
343
|
+
return self.parent().zero()
|
|
344
|
+
|
|
345
|
+
v = self.vector_presentation()
|
|
346
|
+
return self.parent().element_from_coordinates(v, self.degree())
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
r"""
|
|
3
|
+
Elements of finitely generated free graded left modules
|
|
4
|
+
|
|
5
|
+
For an overview, see the :mod:`free graded modules documentation
|
|
6
|
+
<sage.modules.fp_graded.free_module>`.
|
|
7
|
+
|
|
8
|
+
AUTHORS:
|
|
9
|
+
|
|
10
|
+
- Robert R. Bruner, Michael J. Catanzaro (2012): Initial version.
|
|
11
|
+
- Sverre Lunoee--Nielsen and Koen van Woerden (2019-11-29): Updated the
|
|
12
|
+
original software to Sage version 8.9.
|
|
13
|
+
- Sverre Lunoee--Nielsen (2020-07-01): Refactored the code and added
|
|
14
|
+
new documentation and tests.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
# *****************************************************************************
|
|
18
|
+
# Copyright (C) 2019 Robert R. Bruner <rrb@math.wayne.edu>
|
|
19
|
+
# and Michael J. Catanzaro <mike@math.wayne.edu>
|
|
20
|
+
#
|
|
21
|
+
# This program is free software: you can redistribute it and/or modify
|
|
22
|
+
# it under the terms of the GNU General Public License as published by
|
|
23
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
24
|
+
# (at your option) any later version.
|
|
25
|
+
# https://www.gnu.org/licenses/
|
|
26
|
+
# ****************************************************************************
|
|
27
|
+
|
|
28
|
+
from sage.misc.cachefunc import cached_method
|
|
29
|
+
from sage.modules.with_basis.indexed_element import IndexedFreeModuleElement
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class FreeGradedModuleElement(IndexedFreeModuleElement):
|
|
33
|
+
r"""
|
|
34
|
+
Create a module element of a finitely generated free graded left module
|
|
35
|
+
over a connected graded algebra.
|
|
36
|
+
|
|
37
|
+
EXAMPLES::
|
|
38
|
+
|
|
39
|
+
sage: from sage.modules.fp_graded.free_module import FreeGradedModule
|
|
40
|
+
sage: M = FreeGradedModule(SteenrodAlgebra(2), (0, 1))
|
|
41
|
+
|
|
42
|
+
sage: M([0, 0])
|
|
43
|
+
0
|
|
44
|
+
|
|
45
|
+
sage: M([1, 0])
|
|
46
|
+
g[0]
|
|
47
|
+
|
|
48
|
+
sage: M([0, 1])
|
|
49
|
+
g[1]
|
|
50
|
+
|
|
51
|
+
sage: M([Sq(1), 1])
|
|
52
|
+
Sq(1)*g[0] + g[1]
|
|
53
|
+
"""
|
|
54
|
+
|
|
55
|
+
def dense_coefficient_list(self, order=None):
|
|
56
|
+
"""
|
|
57
|
+
Return a list of all coefficients of ``self``.
|
|
58
|
+
|
|
59
|
+
INPUT:
|
|
60
|
+
|
|
61
|
+
- ``order`` -- (optional) an ordering of the basis indexing set
|
|
62
|
+
|
|
63
|
+
Note that this includes *all* of the coefficients, not just
|
|
64
|
+
the nonzero ones. By default they appear in the same order as
|
|
65
|
+
the module generators.
|
|
66
|
+
|
|
67
|
+
EXAMPLES::
|
|
68
|
+
|
|
69
|
+
sage: from sage.modules.fp_graded.free_module import FreeGradedModule
|
|
70
|
+
|
|
71
|
+
sage: # needs sage.combinat
|
|
72
|
+
sage: A = SteenrodAlgebra()
|
|
73
|
+
sage: M.<Y,Z> = FreeGradedModule(SteenrodAlgebra(2), (0, 1))
|
|
74
|
+
sage: x = M.an_element(7); x
|
|
75
|
+
Sq(0,0,1)*Y + Sq(3,1)*Z
|
|
76
|
+
sage: x.dense_coefficient_list()
|
|
77
|
+
[Sq(0,0,1), Sq(3,1)]
|
|
78
|
+
|
|
79
|
+
TESTS:
|
|
80
|
+
|
|
81
|
+
A module with generators in the "wrong" order::
|
|
82
|
+
|
|
83
|
+
sage: M.<Y,Z> = FreeGradedModule(SteenrodAlgebra(2), (1, 0))
|
|
84
|
+
sage: a = Sq(0,0,1)*Y + Sq(3,1)*Z
|
|
85
|
+
sage: a.dense_coefficient_list()
|
|
86
|
+
[Sq(0,0,1), Sq(3,1)]
|
|
87
|
+
"""
|
|
88
|
+
if order is None:
|
|
89
|
+
order = self.parent()._indices
|
|
90
|
+
return [self[i] for i in order]
|
|
91
|
+
|
|
92
|
+
def degree(self):
|
|
93
|
+
r"""
|
|
94
|
+
The degree of ``self``.
|
|
95
|
+
|
|
96
|
+
OUTPUT:
|
|
97
|
+
|
|
98
|
+
The integer degree of this element, or raise an error
|
|
99
|
+
if this is the zero element.
|
|
100
|
+
|
|
101
|
+
EXAMPLES::
|
|
102
|
+
|
|
103
|
+
sage: # needs sage.combinat
|
|
104
|
+
sage: from sage.modules.fp_graded.free_module import *
|
|
105
|
+
sage: A = SteenrodAlgebra(2)
|
|
106
|
+
sage: M = FreeGradedModule(A, (0,1))
|
|
107
|
+
sage: x = M.an_element(7); x
|
|
108
|
+
Sq(0,0,1)*g[0] + Sq(3,1)*g[1]
|
|
109
|
+
sage: x.degree()
|
|
110
|
+
7
|
|
111
|
+
|
|
112
|
+
The zero element has no degree::
|
|
113
|
+
|
|
114
|
+
sage: (x-x).degree() # needs sage.combinat
|
|
115
|
+
Traceback (most recent call last):
|
|
116
|
+
...
|
|
117
|
+
ValueError: the zero element does not have a well-defined degree
|
|
118
|
+
|
|
119
|
+
Neither do non-homogeneous elements::
|
|
120
|
+
|
|
121
|
+
sage: y = M.an_element(4) # needs sage.combinat
|
|
122
|
+
sage: (x+y).degree() # needs sage.combinat
|
|
123
|
+
Traceback (most recent call last):
|
|
124
|
+
...
|
|
125
|
+
ValueError: this is a nonhomogeneous element, no well-defined degree
|
|
126
|
+
"""
|
|
127
|
+
if self.is_zero():
|
|
128
|
+
raise ValueError("the zero element does not have a well-defined degree")
|
|
129
|
+
degrees = []
|
|
130
|
+
try:
|
|
131
|
+
for g, c in zip(self.parent().generator_degrees(),
|
|
132
|
+
self.dense_coefficient_list()):
|
|
133
|
+
if c:
|
|
134
|
+
degrees.append(g + c.degree())
|
|
135
|
+
except ValueError:
|
|
136
|
+
raise ValueError("this is a nonhomogeneous element, no well-defined degree")
|
|
137
|
+
m = min(degrees)
|
|
138
|
+
M = max(degrees)
|
|
139
|
+
if m == M:
|
|
140
|
+
return m
|
|
141
|
+
raise ValueError("this is a nonhomogeneous element, no well-defined degree")
|
|
142
|
+
|
|
143
|
+
def lift_to_free(self):
|
|
144
|
+
r"""
|
|
145
|
+
Return ``self``.
|
|
146
|
+
|
|
147
|
+
It is provided for compatibility with the method of the same
|
|
148
|
+
name for :class:`sage.modules.fp_graded.module.FPModule`.
|
|
149
|
+
|
|
150
|
+
EXAMPLES::
|
|
151
|
+
|
|
152
|
+
sage: # needs sage.combinat
|
|
153
|
+
sage: from sage.modules.fp_graded.free_module import FreeGradedModule
|
|
154
|
+
sage: A = SteenrodAlgebra(2)
|
|
155
|
+
sage: M = FreeGradedModule(A, (0,1))
|
|
156
|
+
sage: x = M.an_element()
|
|
157
|
+
sage: x.lift_to_free() == x
|
|
158
|
+
True
|
|
159
|
+
sage: x.lift_to_free() is x
|
|
160
|
+
True
|
|
161
|
+
"""
|
|
162
|
+
return self
|
|
163
|
+
|
|
164
|
+
def _lmul_(self, a):
|
|
165
|
+
r"""
|
|
166
|
+
Act by left multiplication on this element by ``a``.
|
|
167
|
+
|
|
168
|
+
INPUT:
|
|
169
|
+
|
|
170
|
+
- ``a`` -- an element of the algebra the parent module is defined over
|
|
171
|
+
|
|
172
|
+
OUTPUT: the module element `a \cdot x` where `x` is this module element
|
|
173
|
+
|
|
174
|
+
EXAMPLES::
|
|
175
|
+
|
|
176
|
+
sage: # needs sage.combinat
|
|
177
|
+
sage: from sage.modules.fp_graded.free_module import *
|
|
178
|
+
sage: A2 = SteenrodAlgebra(2, profile=(3,2,1))
|
|
179
|
+
sage: M.<x0,y0,z3> = FreeGradedModule(A2, (0,0,3))
|
|
180
|
+
sage: A2.Sq(2)*M.generator(1)
|
|
181
|
+
Sq(2)*y0
|
|
182
|
+
sage: A2.Sq(2)*(A2.Sq(1)*A2.Sq(2)*M.generator(1) + M.generator(2))
|
|
183
|
+
Sq(2,1)*y0 + Sq(2)*z3
|
|
184
|
+
|
|
185
|
+
TESTS::
|
|
186
|
+
|
|
187
|
+
sage: # needs sage.combinat
|
|
188
|
+
sage: elements = [M.an_element(n) for n in range(1,10)]
|
|
189
|
+
sage: a = A2.Sq(3)
|
|
190
|
+
sage: [a*x for x in elements]
|
|
191
|
+
[Sq(1,1)*x0 + Sq(1,1)*y0,
|
|
192
|
+
0,
|
|
193
|
+
Sq(3,1)*x0 + Sq(3,1)*y0 + Sq(3)*z3,
|
|
194
|
+
Sq(1,1)*z3,
|
|
195
|
+
0,
|
|
196
|
+
Sq(3,2)*x0 + Sq(3,2)*y0 + Sq(3,1)*z3,
|
|
197
|
+
Sq(3,0,1)*x0 + Sq(3,0,1)*y0 + Sq(7)*z3,
|
|
198
|
+
Sq(1,1,1)*x0 + Sq(1,1,1)*y0 + Sq(5,1)*z3,
|
|
199
|
+
Sq(3,2)*z3]
|
|
200
|
+
"""
|
|
201
|
+
return self.parent()(a * c for c in self.dense_coefficient_list())
|
|
202
|
+
|
|
203
|
+
@cached_method
|
|
204
|
+
def vector_presentation(self):
|
|
205
|
+
r"""
|
|
206
|
+
A coordinate vector representing ``self`` when it is a nonzero
|
|
207
|
+
homogeneous element.
|
|
208
|
+
|
|
209
|
+
These are coordinates with respect to the basis chosen by
|
|
210
|
+
:meth:`~sage.modules.fp_graded.free_module.FreeGradedModule.basis_elements`.
|
|
211
|
+
When the element is zero, it has no well defined degree, and this
|
|
212
|
+
function returns ``None``.
|
|
213
|
+
|
|
214
|
+
OUTPUT:
|
|
215
|
+
|
|
216
|
+
A vector of elements in the ground ring of the algebra for
|
|
217
|
+
this module when this element is nonzero. Otherwise, the value
|
|
218
|
+
``None``.
|
|
219
|
+
|
|
220
|
+
.. SEEALSO::
|
|
221
|
+
|
|
222
|
+
* :meth:`sage.modules.fp_graded.free_module.FreeGradedModule.vector_presentation`
|
|
223
|
+
* :meth:`sage.modules.fp_graded.free_module.FreeGradedModule.basis_elements`
|
|
224
|
+
* :meth:`sage.modules.fp_graded.free_module.FreeGradedModule.element_from_coordinates`
|
|
225
|
+
|
|
226
|
+
EXAMPLES::
|
|
227
|
+
|
|
228
|
+
sage: # needs sage.combinat
|
|
229
|
+
sage: A2 = SteenrodAlgebra(2, profile=(3,2,1))
|
|
230
|
+
sage: M = A2.free_graded_module((0,1))
|
|
231
|
+
sage: x = M.an_element(7)
|
|
232
|
+
sage: v = x.vector_presentation(); v
|
|
233
|
+
(1, 0, 0, 0, 0, 1, 0)
|
|
234
|
+
sage: type(v) # needs sage.libs.m4ri
|
|
235
|
+
<class 'sage.modules.vector_mod2_dense.Vector_mod2_dense'>
|
|
236
|
+
sage: M.gen(0).vector_presentation()
|
|
237
|
+
(1)
|
|
238
|
+
sage: M.gen(1).vector_presentation()
|
|
239
|
+
(0, 1)
|
|
240
|
+
sage: V = M.vector_presentation(7)
|
|
241
|
+
sage: v in V
|
|
242
|
+
True
|
|
243
|
+
sage: M.element_from_coordinates(v, 7) == x
|
|
244
|
+
True
|
|
245
|
+
|
|
246
|
+
We can use the basis for the module elements in the degree of `x`,
|
|
247
|
+
together with the coefficients `v` to recreate the element `x`::
|
|
248
|
+
|
|
249
|
+
sage: # needs sage.combinat
|
|
250
|
+
sage: basis = M.basis_elements(7)
|
|
251
|
+
sage: x_ = sum( [c*b for (c,b) in zip(v, basis)] ); x_
|
|
252
|
+
Sq(0,0,1)*g[0] + Sq(3,1)*g[1]
|
|
253
|
+
sage: x__ = M.linear_combination(zip(basis, v)); x__
|
|
254
|
+
Sq(0,0,1)*g[0] + Sq(3,1)*g[1]
|
|
255
|
+
sage: x == x_ == x__
|
|
256
|
+
True
|
|
257
|
+
|
|
258
|
+
This is not defined for elements that are not homogeneous::
|
|
259
|
+
|
|
260
|
+
sage: sum(M.basis()).vector_presentation() # needs sage.combinat
|
|
261
|
+
Traceback (most recent call last):
|
|
262
|
+
...
|
|
263
|
+
ValueError: this is a nonhomogeneous element, no well-defined degree
|
|
264
|
+
|
|
265
|
+
TESTS::
|
|
266
|
+
|
|
267
|
+
sage: M.zero().vector_presentation() is None # needs sage.combinat
|
|
268
|
+
True
|
|
269
|
+
"""
|
|
270
|
+
# We cannot represent the zero element since it does not have a degree,
|
|
271
|
+
# and we therefore do not know which vector space it belongs to.
|
|
272
|
+
#
|
|
273
|
+
# In this case, we could return the integer value 0 since coercion would
|
|
274
|
+
# place it inside any vector space. However, this will not work for
|
|
275
|
+
# homomorphisms, so we return None to be consistent.
|
|
276
|
+
if self.is_zero():
|
|
277
|
+
return None
|
|
278
|
+
|
|
279
|
+
P = self.parent()
|
|
280
|
+
deg = self.degree()
|
|
281
|
+
m = len(P._generator_degrees)
|
|
282
|
+
V = P.vector_presentation(deg)
|
|
283
|
+
|
|
284
|
+
ret = V.zero_vector()
|
|
285
|
+
j = 0
|
|
286
|
+
I = P._indices
|
|
287
|
+
for i in range(m):
|
|
288
|
+
if I[i] not in self._monomial_coefficients:
|
|
289
|
+
j += len(P._basis_coeffs(deg, i))
|
|
290
|
+
continue
|
|
291
|
+
coeff = self._monomial_coefficients[I[i]]
|
|
292
|
+
mc = coeff.monomial_coefficients(copy=False)
|
|
293
|
+
for mono in P._basis_coeffs(deg, i):
|
|
294
|
+
supp = mono.leading_support()
|
|
295
|
+
if supp in mc:
|
|
296
|
+
ret[j] = mc[supp]
|
|
297
|
+
j += 1
|
|
298
|
+
return ret
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
r"""
|
|
3
|
+
Homsets of finitely generated free graded left modules
|
|
4
|
+
|
|
5
|
+
For an overview, see the :mod:`free graded modules documentation
|
|
6
|
+
<sage.modules.fp_graded.free_module>`.
|
|
7
|
+
|
|
8
|
+
EXAMPLES::
|
|
9
|
+
|
|
10
|
+
sage: from sage.modules.fp_graded.free_module import FreeGradedModule
|
|
11
|
+
sage: A = SteenrodAlgebra(2)
|
|
12
|
+
sage: F1 = FreeGradedModule(A, (1,3), names='g')
|
|
13
|
+
sage: F2 = FreeGradedModule(A, (2,3), names='h')
|
|
14
|
+
sage: homset = Hom(F1, F2)
|
|
15
|
+
sage: homset
|
|
16
|
+
Set of Morphisms from Free graded left module on 2 generators ...
|
|
17
|
+
sage: homset([F2((Sq(1), 1)), F2((0, Sq(2)))])
|
|
18
|
+
Module morphism:
|
|
19
|
+
From: Free graded left module on 2 generators over mod 2 Steenrod algebra, milnor basis
|
|
20
|
+
To: Free graded left module on 2 generators over mod 2 Steenrod algebra, milnor basis
|
|
21
|
+
Defn: g[1] |--> Sq(1)*h[2] + h[3]
|
|
22
|
+
g[3] |--> Sq(2)*h[3]
|
|
23
|
+
sage: TestSuite(homset).run() # needs sage.combinat
|
|
24
|
+
|
|
25
|
+
AUTHORS:
|
|
26
|
+
|
|
27
|
+
- Robert R. Bruner, Michael J. Catanzaro (2012): Initial version.
|
|
28
|
+
- Sverre Lunoee--Nielsen and Koen van Woerden (2019-11-29): Updated the
|
|
29
|
+
original software to Sage version 8.9.
|
|
30
|
+
- Sverre Lunoee--Nielsen (2020-07-01): Refactored the code and added
|
|
31
|
+
new documentation and tests.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
# *****************************************************************************
|
|
35
|
+
# Copyright (C) 2021 Robert R. Bruner <rrb@math.wayne.edu> and
|
|
36
|
+
# Michael J. Catanzaro <mike@math.wayne.edu>
|
|
37
|
+
#
|
|
38
|
+
# This program is free software: you can redistribute it and/or modify
|
|
39
|
+
# it under the terms of the GNU General Public License as published by
|
|
40
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
41
|
+
# (at your option) any later version.
|
|
42
|
+
# https://www.gnu.org/licenses/
|
|
43
|
+
# ****************************************************************************
|
|
44
|
+
|
|
45
|
+
from sage.modules.fp_graded.free_morphism import FreeGradedModuleMorphism
|
|
46
|
+
from sage.modules.fp_graded.homspace import FPModuleHomspace
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
class FreeGradedModuleHomspace(FPModuleHomspace):
|
|
50
|
+
"""
|
|
51
|
+
Homspace between two free graded modules.
|
|
52
|
+
"""
|
|
53
|
+
Element = FreeGradedModuleMorphism
|