passagemath-modules 10.6.31rc3__cp314-cp314-musllinux_1_2_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 +808 -0
- passagemath_modules-10.6.31rc3.dist-info/WHEEL +5 -0
- passagemath_modules-10.6.31rc3.dist-info/top_level.txt +2 -0
- passagemath_modules.libs/libgcc_s-0cd532bd.so.1 +0 -0
- passagemath_modules.libs/libgfortran-2c33b284.so.5.0.0 +0 -0
- passagemath_modules.libs/libgmp-0e7fc84e.so.10.5.0 +0 -0
- passagemath_modules.libs/libgsl-42cda06f.so.28.0.0 +0 -0
- passagemath_modules.libs/libmpc-d8ebe4b5.so.3.3.1 +0 -0
- passagemath_modules.libs/libmpfr-aaecbfc0.so.6.2.1 +0 -0
- passagemath_modules.libs/libopenblasp-r0-905cb27d.3.29.so +0 -0
- passagemath_modules.libs/libquadmath-bb76a5fc.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.so +0 -0
- sage/calculus/integration.pyx +698 -0
- sage/calculus/interpolation.cpython-314-x86_64-linux-musl.so +0 -0
- sage/calculus/interpolation.pxd +13 -0
- sage/calculus/interpolation.pyx +387 -0
- sage/calculus/interpolators.cpython-314-x86_64-linux-musl.so +0 -0
- sage/calculus/interpolators.pyx +326 -0
- sage/calculus/ode.cpython-314-x86_64-linux-musl.so +0 -0
- sage/calculus/ode.pxd +5 -0
- sage/calculus/ode.pyx +610 -0
- sage/calculus/riemann.cpython-314-x86_64-linux-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.so +0 -0
- sage/matrix/constructor.pyx +750 -0
- sage/matrix/docs.py +430 -0
- sage/matrix/echelon_matrix.cpython-314-x86_64-linux-musl.so +0 -0
- sage/matrix/echelon_matrix.pyx +155 -0
- sage/matrix/matrix.pxd +2 -0
- sage/matrix/matrix0.cpython-314-x86_64-linux-musl.so +0 -0
- sage/matrix/matrix0.pxd +68 -0
- sage/matrix/matrix0.pyx +6324 -0
- sage/matrix/matrix1.cpython-314-x86_64-linux-musl.so +0 -0
- sage/matrix/matrix1.pxd +8 -0
- sage/matrix/matrix1.pyx +2851 -0
- sage/matrix/matrix2.cpython-314-x86_64-linux-musl.so +0 -0
- sage/matrix/matrix2.pxd +25 -0
- sage/matrix/matrix2.pyx +20181 -0
- sage/matrix/matrix_cdv.cpython-314-x86_64-linux-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.so +0 -0
- sage/matroids/extension.pxd +34 -0
- sage/matroids/extension.pyx +519 -0
- sage/matroids/flats_matroid.cpython-314-x86_64-linux-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.so +0 -0
- sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
- sage/rings/function_field/khuri_makdisi.cpython-314-x86_64-linux-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.so +0 -0
- sage/stats/hmm/chmm.pyx +1595 -0
- sage/stats/hmm/distributions.cpython-314-x86_64-linux-musl.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-musl.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-musl.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-musl.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-musl.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,567 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
r"""
|
|
3
|
+
Helper classes to implement tensor operations
|
|
4
|
+
|
|
5
|
+
.. warning::
|
|
6
|
+
|
|
7
|
+
This module is not meant to be used directly. It just provides
|
|
8
|
+
functionality for other classes to implement tensor operations.
|
|
9
|
+
|
|
10
|
+
The :class:`VectorCollection` constructs the basis of tensor products
|
|
11
|
+
(and symmetric/exterior powers) in terms of a chosen collection of
|
|
12
|
+
vectors that generate the vector space(s).
|
|
13
|
+
|
|
14
|
+
EXAMPLES::
|
|
15
|
+
|
|
16
|
+
sage: from sage.modules.tensor_operations import VectorCollection, TensorOperation
|
|
17
|
+
sage: V = VectorCollection([(1,0), (-1, 0), (1,2)], QQ, 2)
|
|
18
|
+
sage: W = VectorCollection([(1,1), (1,-1), (-1, 1)], QQ, 2)
|
|
19
|
+
sage: VW = TensorOperation([V, W], operation='product')
|
|
20
|
+
|
|
21
|
+
Here is the tensor product of two vectors::
|
|
22
|
+
|
|
23
|
+
sage: V.vectors()[0]
|
|
24
|
+
(1, 0)
|
|
25
|
+
sage: W.vectors()[1]
|
|
26
|
+
(1, -1)
|
|
27
|
+
|
|
28
|
+
In a convenient choice of basis, the tensor product is
|
|
29
|
+
`(a,b)\otimes(c,d)=(ac,ad,bc,bd)`. In this example, it is one of the
|
|
30
|
+
vectors of the vector collection ``VW`` ::
|
|
31
|
+
|
|
32
|
+
sage: VW.index_map(0, 1)
|
|
33
|
+
1
|
|
34
|
+
sage: VW.vectors()[VW.index_map(0, 1)]
|
|
35
|
+
(1, -1, 0, 0)
|
|
36
|
+
|
|
37
|
+
sage: rows = []
|
|
38
|
+
sage: for i, j in cartesian_product((range(3), range(3))):
|
|
39
|
+
....: v = V.vectors()[i]
|
|
40
|
+
....: w = W.vectors()[j]
|
|
41
|
+
....: i_tensor_j = VW.index_map(i, j)
|
|
42
|
+
....: vw = VW.vectors()[i_tensor_j]
|
|
43
|
+
....: rows.append([i, v, j, w, i_tensor_j, vw])
|
|
44
|
+
sage: table(rows)
|
|
45
|
+
0 (1, 0) 0 (1, 1) 0 (1, 1, 0, 0)
|
|
46
|
+
0 (1, 0) 1 (1, -1) 1 (1, -1, 0, 0)
|
|
47
|
+
0 (1, 0) 2 (-1, 1) 2 (-1, 1, 0, 0)
|
|
48
|
+
1 (-1, 0) 0 (1, 1) 3 (-1, -1, 0, 0)
|
|
49
|
+
1 (-1, 0) 1 (1, -1) 2 (-1, 1, 0, 0)
|
|
50
|
+
1 (-1, 0) 2 (-1, 1) 1 (1, -1, 0, 0)
|
|
51
|
+
2 (1, 2) 0 (1, 1) 4 (1, 1, 2, 2)
|
|
52
|
+
2 (1, 2) 1 (1, -1) 5 (1, -1, 2, -2)
|
|
53
|
+
2 (1, 2) 2 (-1, 1) 6 (-1, 1, -2, 2)
|
|
54
|
+
"""
|
|
55
|
+
|
|
56
|
+
# ****************************************************************************
|
|
57
|
+
# Copyright (C) 2013 Volker Braun <vbraun.name@gmail.com>
|
|
58
|
+
#
|
|
59
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
60
|
+
# as published by the Free Software Foundation; either version 2 of
|
|
61
|
+
# the License, or (at your option) any later version.
|
|
62
|
+
# https://www.gnu.org/licenses/
|
|
63
|
+
# ****************************************************************************
|
|
64
|
+
from itertools import product
|
|
65
|
+
from collections import defaultdict
|
|
66
|
+
|
|
67
|
+
from sage.modules.free_module import FreeModule_ambient_field
|
|
68
|
+
from sage.misc.misc_c import prod
|
|
69
|
+
from sage.matrix.constructor import matrix
|
|
70
|
+
from sage.rings.integer_ring import ZZ
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def symmetrized_coordinate_sums(dim, n):
|
|
74
|
+
"""
|
|
75
|
+
Return formal symmetrized sum of multi-indices.
|
|
76
|
+
|
|
77
|
+
INPUT:
|
|
78
|
+
|
|
79
|
+
- ``dim`` -- integer; the dimension (range of each index)
|
|
80
|
+
|
|
81
|
+
- ``n`` -- integer; the total number of indices
|
|
82
|
+
|
|
83
|
+
OUTPUT:
|
|
84
|
+
|
|
85
|
+
A symmetrized formal sum of multi-indices (tuples of integers)
|
|
86
|
+
|
|
87
|
+
EXAMPLES::
|
|
88
|
+
|
|
89
|
+
sage: from sage.modules.tensor_operations import symmetrized_coordinate_sums
|
|
90
|
+
sage: symmetrized_coordinate_sums(2, 2)
|
|
91
|
+
((0, 0), (0, 1) + (1, 0), (1, 1))
|
|
92
|
+
"""
|
|
93
|
+
from sage.structure.formal_sum import FormalSum
|
|
94
|
+
|
|
95
|
+
coordinates = [list(range(dim)) for i in range(n)]
|
|
96
|
+
table = defaultdict(list)
|
|
97
|
+
|
|
98
|
+
for i in product(*coordinates):
|
|
99
|
+
sort_i = tuple(sorted(i))
|
|
100
|
+
table[sort_i].append([1, tuple(i)])
|
|
101
|
+
|
|
102
|
+
return tuple(sorted(FormalSum(x) for x in table.values()))
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def antisymmetrized_coordinate_sums(dim, n):
|
|
106
|
+
"""
|
|
107
|
+
Return formal anti-symmetrized sum of multi-indices.
|
|
108
|
+
|
|
109
|
+
INPUT:
|
|
110
|
+
|
|
111
|
+
- ``dim`` -- integer; the dimension (range of each index)
|
|
112
|
+
|
|
113
|
+
- ``n`` -- integer; the total number of indices
|
|
114
|
+
|
|
115
|
+
OUTPUT:
|
|
116
|
+
|
|
117
|
+
An anti-symmetrized formal sum of multi-indices (tuples of integers)
|
|
118
|
+
|
|
119
|
+
EXAMPLES::
|
|
120
|
+
|
|
121
|
+
sage: from sage.modules.tensor_operations import antisymmetrized_coordinate_sums
|
|
122
|
+
sage: antisymmetrized_coordinate_sums(3, 2) # needs sage.groups
|
|
123
|
+
((0, 1) - (1, 0), (0, 2) - (2, 0), (1, 2) - (2, 1))
|
|
124
|
+
"""
|
|
125
|
+
from sage.structure.formal_sum import FormalSum
|
|
126
|
+
from sage.groups.perm_gps.permgroup_named import SymmetricGroup
|
|
127
|
+
from sage.combinat.combination import Combinations
|
|
128
|
+
S_d = SymmetricGroup(n)
|
|
129
|
+
table = [FormalSum([[g.sign(), g(tuple(i))] for g in S_d])
|
|
130
|
+
for i in Combinations(range(dim), n)]
|
|
131
|
+
return tuple(table)
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
class VectorCollection(FreeModule_ambient_field):
|
|
135
|
+
"""
|
|
136
|
+
An ordered collection of generators of a vector space.
|
|
137
|
+
|
|
138
|
+
This is like a list of vectors, but with extra argument checking.
|
|
139
|
+
|
|
140
|
+
.. warning::
|
|
141
|
+
|
|
142
|
+
This class is only used as a base class for filtered vector
|
|
143
|
+
spaces. You should not use it yourself.
|
|
144
|
+
|
|
145
|
+
INPUT:
|
|
146
|
+
|
|
147
|
+
- ``dim`` -- integer; the dimension of the ambient vector space
|
|
148
|
+
|
|
149
|
+
- ``base_ring`` -- a field; the base field of the ambient vector space
|
|
150
|
+
|
|
151
|
+
- ``rays`` -- any list/iterable of things than can be converted
|
|
152
|
+
into vectors of the ambient vector space. These will be used to
|
|
153
|
+
span the subspaces of the filtration. Must span the ambient
|
|
154
|
+
vector space.
|
|
155
|
+
|
|
156
|
+
EXAMPLES::
|
|
157
|
+
|
|
158
|
+
sage: from sage.modules.tensor_operations import VectorCollection
|
|
159
|
+
sage: R = VectorCollection([(1,0), (0,1), (1,2)], QQ, 2); R
|
|
160
|
+
Vector space of dimension 2 over Rational Field
|
|
161
|
+
|
|
162
|
+
TESTS::
|
|
163
|
+
|
|
164
|
+
sage: R.vectors()
|
|
165
|
+
((1, 0), (0, 1), (1, 2))
|
|
166
|
+
sage: r = R._vectors[0]
|
|
167
|
+
sage: type(r)
|
|
168
|
+
<class 'sage.modules.vector_rational_dense.Vector_rational_dense'>
|
|
169
|
+
sage: r.parent() is R
|
|
170
|
+
True
|
|
171
|
+
sage: r.is_immutable()
|
|
172
|
+
True
|
|
173
|
+
"""
|
|
174
|
+
def __init__(self, vector_collection, base_ring, dim):
|
|
175
|
+
"""
|
|
176
|
+
EXAMPLES::
|
|
177
|
+
|
|
178
|
+
sage: from sage.modules.tensor_operations import VectorCollection
|
|
179
|
+
sage: VectorCollection([(1,0), (4,1), (1,2)], QQ, 2)
|
|
180
|
+
Vector space of dimension 2 over Rational Field
|
|
181
|
+
"""
|
|
182
|
+
super().__init__(base_ring, dim)
|
|
183
|
+
self._n_vectors = len(vector_collection)
|
|
184
|
+
self._vectors = tuple(self(r) for r in vector_collection)
|
|
185
|
+
for r in self._vectors:
|
|
186
|
+
r.set_immutable()
|
|
187
|
+
if matrix(base_ring, self._vectors).rank() != self.degree():
|
|
188
|
+
raise ValueError('the vectors must span the ambient vector space')
|
|
189
|
+
self._all_indices = tuple(ZZ(i) for i in range(self._n_vectors))
|
|
190
|
+
|
|
191
|
+
def vectors(self):
|
|
192
|
+
"""
|
|
193
|
+
Return the collection of vectors.
|
|
194
|
+
|
|
195
|
+
OUTPUT:
|
|
196
|
+
|
|
197
|
+
A tuple of vectors. The vectors that were specified in the
|
|
198
|
+
constructor, in the same order.
|
|
199
|
+
|
|
200
|
+
EXAMPLES::
|
|
201
|
+
|
|
202
|
+
sage: from sage.modules.tensor_operations import VectorCollection
|
|
203
|
+
sage: V = VectorCollection([(1,0), (0,1), (1,2)], QQ, 2)
|
|
204
|
+
sage: V.vectors()
|
|
205
|
+
((1, 0), (0, 1), (1, 2))
|
|
206
|
+
"""
|
|
207
|
+
return self._vectors
|
|
208
|
+
|
|
209
|
+
def n_vectors(self):
|
|
210
|
+
"""
|
|
211
|
+
Return the number of vectors.
|
|
212
|
+
|
|
213
|
+
OUTPUT: integer
|
|
214
|
+
|
|
215
|
+
EXAMPLES::
|
|
216
|
+
|
|
217
|
+
sage: from sage.modules.tensor_operations import VectorCollection
|
|
218
|
+
sage: V = VectorCollection([(1,0), (0,1), (1,2)], QQ, 2)
|
|
219
|
+
sage: V.n_vectors()
|
|
220
|
+
3
|
|
221
|
+
"""
|
|
222
|
+
return len(self._vectors)
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
class TensorOperation(VectorCollection):
|
|
226
|
+
"""
|
|
227
|
+
Auxiliary class to compute the tensor product of two
|
|
228
|
+
:class:`VectorCollection` objects.
|
|
229
|
+
|
|
230
|
+
.. warning::
|
|
231
|
+
|
|
232
|
+
This class is only used as a base class for filtered vector
|
|
233
|
+
spaces. You should not use it yourself.
|
|
234
|
+
|
|
235
|
+
INPUT:
|
|
236
|
+
|
|
237
|
+
- ``vector_collections`` -- a nonempty list/tuple/iterable of
|
|
238
|
+
:class:`VectorCollection` objects
|
|
239
|
+
|
|
240
|
+
- ``operation`` -- string; the tensor operation. Currently allowed
|
|
241
|
+
values are ``'product'``, ``'symmetric'``, and ``'antisymmetric'``.
|
|
242
|
+
|
|
243
|
+
.. TODO::
|
|
244
|
+
|
|
245
|
+
More general tensor operations (specified by Young tableaux)
|
|
246
|
+
should be implemented.
|
|
247
|
+
|
|
248
|
+
EXAMPLES::
|
|
249
|
+
|
|
250
|
+
sage: from sage.modules.tensor_operations import VectorCollection, TensorOperation
|
|
251
|
+
sage: R = VectorCollection([(1,0), (1,2), (-1,-2)], QQ, 2)
|
|
252
|
+
sage: S = VectorCollection([(1,), (-1,)], QQ, 1)
|
|
253
|
+
sage: R_tensor_S = TensorOperation([R, S])
|
|
254
|
+
sage: R_tensor_S.index_map(0, 0)
|
|
255
|
+
0
|
|
256
|
+
sage: matrix(ZZ, 3, 2, lambda i,j: R_tensor_S.index_map(i, j))
|
|
257
|
+
[0 1]
|
|
258
|
+
[2 3]
|
|
259
|
+
[3 2]
|
|
260
|
+
sage: R_tensor_S.vectors()
|
|
261
|
+
((1, 0), (-1, 0), (1, 2), (-1, -2))
|
|
262
|
+
"""
|
|
263
|
+
def __init__(self, vector_collections, operation='product'):
|
|
264
|
+
"""
|
|
265
|
+
EXAMPLES::
|
|
266
|
+
|
|
267
|
+
sage: from sage.modules.tensor_operations import VectorCollection, TensorOperation
|
|
268
|
+
sage: R = VectorCollection([(1,0), (5,2), (-1,-2)], QQ, 2)
|
|
269
|
+
sage: S = VectorCollection([(1,), (-1,)], QQ, 1)
|
|
270
|
+
sage: TensorOperation([S, R])
|
|
271
|
+
Vector space of dimension 2 over Rational Field
|
|
272
|
+
"""
|
|
273
|
+
assert all(isinstance(V, VectorCollection) for V in vector_collections)
|
|
274
|
+
self._base_ring = base_ring = vector_collections[0].base_ring()
|
|
275
|
+
assert all(V.base_ring() is base_ring for V in vector_collections)
|
|
276
|
+
self._V = tuple(vector_collections)
|
|
277
|
+
self._vectors = []
|
|
278
|
+
self._index_map = {}
|
|
279
|
+
if operation == 'product':
|
|
280
|
+
self._init_product()
|
|
281
|
+
elif operation == 'symmetric':
|
|
282
|
+
assert all(V is self._V[0] for V in self._V)
|
|
283
|
+
self._init_symmetric()
|
|
284
|
+
elif operation == 'antisymmetric':
|
|
285
|
+
assert all(V is self._V[0] for V in self._V)
|
|
286
|
+
self._init_antisymmetric()
|
|
287
|
+
else:
|
|
288
|
+
raise ValueError('invalid operation')
|
|
289
|
+
vectors = self._vectors
|
|
290
|
+
dim = 0 if len(vectors) == 0 else len(vectors[0])
|
|
291
|
+
del self._vectors
|
|
292
|
+
del self._base_ring
|
|
293
|
+
super().__init__(vectors, base_ring, dim)
|
|
294
|
+
|
|
295
|
+
def _init_product_vectors(self, i):
|
|
296
|
+
r"""
|
|
297
|
+
Helper to build up ``self._vectors`` incrementally during the
|
|
298
|
+
constructor.
|
|
299
|
+
|
|
300
|
+
INPUT:
|
|
301
|
+
|
|
302
|
+
- ``i`` -- list/tuple of integers. Multi-index of length equal
|
|
303
|
+
to the number of constituent vector collections. The `j`-th
|
|
304
|
+
entry `i[j]` indexes a ray in the `j`-th vector
|
|
305
|
+
collection. Hence, `i` specifies one element in each vector
|
|
306
|
+
collection.
|
|
307
|
+
|
|
308
|
+
OUTPUT:
|
|
309
|
+
|
|
310
|
+
This method mutates the :class:`TensorOperation` instance. In
|
|
311
|
+
particular, the tensor product of the vectors of the vector
|
|
312
|
+
collection is computed, and added to the elements of the
|
|
313
|
+
tensor operation if it has not been encountered before.
|
|
314
|
+
|
|
315
|
+
The index of this tensor product vector is returned as an
|
|
316
|
+
integer.
|
|
317
|
+
|
|
318
|
+
.. NOTE::
|
|
319
|
+
|
|
320
|
+
In a convenient choice of coordinates the tensor product
|
|
321
|
+
of, say, two vectors `(a,b)` and `(c,d)`, is `(ac, ad, bc, bd)`.
|
|
322
|
+
|
|
323
|
+
EXAMPLES::
|
|
324
|
+
|
|
325
|
+
sage: from sage.modules.tensor_operations import \
|
|
326
|
+
....: VectorCollection, TensorOperation
|
|
327
|
+
sage: R = VectorCollection([(1,0), (1,2), (-1,-2)], QQ, 2)
|
|
328
|
+
sage: S = VectorCollection([(1,), (-1,)], QQ, 1)
|
|
329
|
+
sage: R_tensor_S = TensorOperation([R,S])
|
|
330
|
+
sage: R_tensor_S.index_map(1, 1)
|
|
331
|
+
3
|
|
332
|
+
sage: R_tensor_S.index_map(2, 0)
|
|
333
|
+
3
|
|
334
|
+
sage: R_tensor_S.vectors() # indirect doctest
|
|
335
|
+
((1, 0), (-1, 0), (1, 2), (-1, -2))
|
|
336
|
+
"""
|
|
337
|
+
# Pick out the i[j]-th vector
|
|
338
|
+
rays = [list(self._V[j].vectors()[k]) for j, k in enumerate(i)]
|
|
339
|
+
v = [prod(r) for r in product(*rays)] # build up the tensor product
|
|
340
|
+
v = tuple(v)
|
|
341
|
+
# Use index of pre-existing tensor product vector if there is one
|
|
342
|
+
try:
|
|
343
|
+
result = self._vectors.index(v)
|
|
344
|
+
except ValueError:
|
|
345
|
+
self._vectors.append(v)
|
|
346
|
+
result = len(self._vectors) - 1
|
|
347
|
+
return result
|
|
348
|
+
|
|
349
|
+
def _init_power_operation_vectors(self, i, linear_combinations):
|
|
350
|
+
"""
|
|
351
|
+
Helper to build up ``self._vectors`` incrementally during the constructor.
|
|
352
|
+
|
|
353
|
+
INPUT:
|
|
354
|
+
|
|
355
|
+
- ``i`` -- list/tuple of integers. Specifies one element
|
|
356
|
+
(vector) in each vector collection as in
|
|
357
|
+
:meth:`_init_product_vector`
|
|
358
|
+
|
|
359
|
+
- ``linear_combination`` -- formal linear combination of
|
|
360
|
+
vector indices in the vectors specified by `i`
|
|
361
|
+
|
|
362
|
+
EXAMPLES::
|
|
363
|
+
|
|
364
|
+
sage: from sage.modules.tensor_operations import \
|
|
365
|
+
....: VectorCollection, TensorOperation
|
|
366
|
+
sage: R = VectorCollection([(1,0), (1,2), (-1,-2)], QQ, 2)
|
|
367
|
+
sage: Sym2_R = TensorOperation([R,R], operation='symmetric')
|
|
368
|
+
sage: Sym2_R.vectors() # indirect doctest
|
|
369
|
+
((1, 0, 0), (1, 2, 0), (-1, -2, 0), (1, 4, 4), (-1, -4, -4))
|
|
370
|
+
sage: Alt2_R = TensorOperation([R, R], operation='antisymmetric') # needs sage.groups
|
|
371
|
+
sage: Alt2_R.vectors() # indirect doctest # needs sage.groups
|
|
372
|
+
((2), (-2))
|
|
373
|
+
"""
|
|
374
|
+
rays = [self._V[j].vectors()[k] for j, k in enumerate(i)]
|
|
375
|
+
v = []
|
|
376
|
+
for coordinate_linear_combination in linear_combinations:
|
|
377
|
+
v_entry = self._base_ring.zero()
|
|
378
|
+
for coeff, index in coordinate_linear_combination:
|
|
379
|
+
v_entry += coeff * prod(rays[j][k] for j, k in enumerate(index))
|
|
380
|
+
v.append(v_entry)
|
|
381
|
+
v = tuple(v)
|
|
382
|
+
if all(vi == 0 for vi in v):
|
|
383
|
+
return None
|
|
384
|
+
try:
|
|
385
|
+
result = self._vectors.index(v)
|
|
386
|
+
except ValueError:
|
|
387
|
+
self._vectors.append(v)
|
|
388
|
+
result = len(self._vectors) - 1
|
|
389
|
+
return result
|
|
390
|
+
|
|
391
|
+
def _init_product(self):
|
|
392
|
+
"""
|
|
393
|
+
Initialization for the tensor product.
|
|
394
|
+
|
|
395
|
+
EXAMPLES::
|
|
396
|
+
|
|
397
|
+
sage: from sage.modules.tensor_operations import \
|
|
398
|
+
....: VectorCollection, TensorOperation
|
|
399
|
+
sage: R = VectorCollection([(1,0), (1,2), (-1,-2)], QQ, 2)
|
|
400
|
+
sage: S = VectorCollection([(1,), (-1,)], QQ, 1)
|
|
401
|
+
sage: R_tensor_S = TensorOperation([R,S], operation='product')
|
|
402
|
+
sage: sorted(R_tensor_S._index_map.items()) # indirect doctest
|
|
403
|
+
[((0, 0), 0), ((0, 1), 1), ((1, 0), 2), ((1, 1), 3), ((2, 0), 3), ((2, 1), 2)]
|
|
404
|
+
"""
|
|
405
|
+
V_list_indices = [list(range(V.n_vectors())) for V in self._V]
|
|
406
|
+
for i in product(*V_list_indices):
|
|
407
|
+
self._index_map[tuple(i)] = self._init_product_vectors(i)
|
|
408
|
+
self._symmetrize_indices = False
|
|
409
|
+
|
|
410
|
+
def _init_symmetric(self):
|
|
411
|
+
"""
|
|
412
|
+
Initialization for the symmetric product.
|
|
413
|
+
|
|
414
|
+
EXAMPLES::
|
|
415
|
+
|
|
416
|
+
sage: from sage.modules.tensor_operations import \
|
|
417
|
+
....: VectorCollection, TensorOperation
|
|
418
|
+
sage: R = VectorCollection([(1,0), (1,2), (-1,-2)], QQ, 2)
|
|
419
|
+
sage: Sym2_R = TensorOperation([R,R], operation='symmetric') # indirect doctest
|
|
420
|
+
sage: sorted(Sym2_R._index_map.items())
|
|
421
|
+
[((0, 0), 0), ((0, 1), 1), ((0, 2), 2), ((1, 1), 3), ((1, 2), 4), ((2, 2), 3)]
|
|
422
|
+
"""
|
|
423
|
+
V_list_indices = [list(range(V.n_vectors())) for V in self._V]
|
|
424
|
+
Sym = symmetrized_coordinate_sums(self._V[0].dimension(),
|
|
425
|
+
len(self._V))
|
|
426
|
+
N = len(V_list_indices)
|
|
427
|
+
for i in product(*V_list_indices):
|
|
428
|
+
if any(i[j - 1] > i[j] for j in range(1, N)):
|
|
429
|
+
continue
|
|
430
|
+
self._index_map[tuple(i)] = self._init_power_operation_vectors(i, Sym)
|
|
431
|
+
self._symmetrize_indices = True
|
|
432
|
+
|
|
433
|
+
def _init_antisymmetric(self):
|
|
434
|
+
"""
|
|
435
|
+
Initialization for the antisymmetric product.
|
|
436
|
+
|
|
437
|
+
EXAMPLES::
|
|
438
|
+
|
|
439
|
+
sage: from sage.modules.tensor_operations import \
|
|
440
|
+
....: VectorCollection, TensorOperation
|
|
441
|
+
sage: R = VectorCollection([(1,0), (1,2), (-1,-2)], QQ, 2)
|
|
442
|
+
sage: Alt2_R = TensorOperation([R, R], operation='antisymmetric') # indirect doctest # needs sage.groups
|
|
443
|
+
sage: sorted(Alt2_R._index_map.items()) # needs sage.groups
|
|
444
|
+
[((0, 1), 0), ((0, 2), 1)]
|
|
445
|
+
"""
|
|
446
|
+
n = len(self._V)
|
|
447
|
+
dim = self._V[0].degree()
|
|
448
|
+
Alt = antisymmetrized_coordinate_sums(dim, n)
|
|
449
|
+
from sage.combinat.combination import Combinations
|
|
450
|
+
for i in Combinations(range(self._V[0].n_vectors()), n):
|
|
451
|
+
ray = self._init_power_operation_vectors(i, Alt)
|
|
452
|
+
if ray is not None:
|
|
453
|
+
self._index_map[tuple(i)] = ray
|
|
454
|
+
self._symmetrize_indices = True
|
|
455
|
+
|
|
456
|
+
def index_map(self, *i):
|
|
457
|
+
"""
|
|
458
|
+
Return the result of the tensor operation.
|
|
459
|
+
|
|
460
|
+
INPUT:
|
|
461
|
+
|
|
462
|
+
- ``*i`` -- list of integers. The indices (in the
|
|
463
|
+
corresponding factor of the tensor operation) of the domain
|
|
464
|
+
vector.
|
|
465
|
+
|
|
466
|
+
OUTPUT:
|
|
467
|
+
|
|
468
|
+
The index (in :meth:`vectors`) of the image of the tensor
|
|
469
|
+
product/operation acting on the domain vectors indexed by `i`.
|
|
470
|
+
|
|
471
|
+
``None`` is returned if the tensor operation maps the
|
|
472
|
+
generators to zero (usually because of antisymmetry).
|
|
473
|
+
|
|
474
|
+
EXAMPLES::
|
|
475
|
+
|
|
476
|
+
sage: from sage.modules.tensor_operations import \
|
|
477
|
+
....: VectorCollection, TensorOperation
|
|
478
|
+
sage: R = VectorCollection([(1,0), (1,2), (-1,-2)], QQ, 2)
|
|
479
|
+
sage: Sym3_R = TensorOperation([R]*3, 'symmetric')
|
|
480
|
+
|
|
481
|
+
The symmetric product of the first vector ``(1,0)``, the
|
|
482
|
+
second vector ``(1,2)``, and the third vector ``(-1,-2)``
|
|
483
|
+
equals the vector with index number 4 (that is, the fifth) in
|
|
484
|
+
the symmetric product vector collection::
|
|
485
|
+
|
|
486
|
+
sage: Sym3_R.index_map(0, 1, 2)
|
|
487
|
+
4
|
|
488
|
+
|
|
489
|
+
In suitable coordinates, this is the vector::
|
|
490
|
+
|
|
491
|
+
sage: Sym3_R.vectors()[4]
|
|
492
|
+
(-1, -4, -4, 0)
|
|
493
|
+
|
|
494
|
+
The product is symmetric::
|
|
495
|
+
|
|
496
|
+
sage: Sym3_R.index_map(2, 0, 1)
|
|
497
|
+
4
|
|
498
|
+
sage: Sym3_R.index_map(2, 1, 0)
|
|
499
|
+
4
|
|
500
|
+
|
|
501
|
+
As another example, here is the rank-2 determinant::
|
|
502
|
+
|
|
503
|
+
sage: from sage.modules.tensor_operations import \
|
|
504
|
+
....: VectorCollection, TensorOperation
|
|
505
|
+
sage: R = VectorCollection([(1,0), (0,1), (-2,-3)], QQ, 2)
|
|
506
|
+
sage: detR = TensorOperation([R]*2, 'antisymmetric') # needs sage.groups
|
|
507
|
+
sage: detR.index_map(1, 0) # needs sage.groups
|
|
508
|
+
0
|
|
509
|
+
sage: detR.index_map(0, 1) # needs sage.groups
|
|
510
|
+
0
|
|
511
|
+
|
|
512
|
+
TESTS::
|
|
513
|
+
|
|
514
|
+
sage: sorted(detR._index_map.items()) # needs sage.groups
|
|
515
|
+
[((0, 1), 0), ((0, 2), 1), ((1, 2), 2)]
|
|
516
|
+
sage: detR.vectors() # needs sage.groups
|
|
517
|
+
((1), (-3), (2))
|
|
518
|
+
"""
|
|
519
|
+
if len(i) == 1 and isinstance(i[0], (list, tuple)):
|
|
520
|
+
i = tuple(i[0])
|
|
521
|
+
if self._symmetrize_indices:
|
|
522
|
+
i = tuple(sorted(i))
|
|
523
|
+
try:
|
|
524
|
+
return self._index_map[i]
|
|
525
|
+
except KeyError:
|
|
526
|
+
return None
|
|
527
|
+
|
|
528
|
+
def preimage(self):
|
|
529
|
+
"""
|
|
530
|
+
A choice of pre-image multi-indices.
|
|
531
|
+
|
|
532
|
+
OUTPUT:
|
|
533
|
+
|
|
534
|
+
A list of multi-indices (tuples of integers) whose image is
|
|
535
|
+
the entire image under the :meth:`index_map`.
|
|
536
|
+
|
|
537
|
+
EXAMPLES::
|
|
538
|
+
|
|
539
|
+
sage: from sage.modules.tensor_operations import \
|
|
540
|
+
....: VectorCollection, TensorOperation
|
|
541
|
+
sage: R = VectorCollection([(1,0), (0,1), (-2,-3)], QQ, 2)
|
|
542
|
+
sage: detR = TensorOperation([R]*2, 'antisymmetric') # needs sage.groups
|
|
543
|
+
sage: sorted(detR.preimage()) # needs sage.groups
|
|
544
|
+
[(0, 1), (0, 2), (1, 2)]
|
|
545
|
+
sage: sorted(detR.codomain()) # needs sage.groups
|
|
546
|
+
[0, 1, 2]
|
|
547
|
+
"""
|
|
548
|
+
return self._index_map.keys()
|
|
549
|
+
|
|
550
|
+
def codomain(self):
|
|
551
|
+
"""
|
|
552
|
+
The codomain of the index map.
|
|
553
|
+
|
|
554
|
+
OUTPUT: list of integers; the image of :meth:`index_map`
|
|
555
|
+
|
|
556
|
+
EXAMPLES::
|
|
557
|
+
|
|
558
|
+
sage: from sage.modules.tensor_operations import \
|
|
559
|
+
....: VectorCollection, TensorOperation
|
|
560
|
+
sage: R = VectorCollection([(1,0), (0,1), (-2,-3)], QQ, 2)
|
|
561
|
+
sage: detR = TensorOperation([R]*2, 'antisymmetric') # needs sage.groups
|
|
562
|
+
sage: sorted(detR.preimage()) # needs sage.groups
|
|
563
|
+
[(0, 1), (0, 2), (1, 2)]
|
|
564
|
+
sage: sorted(detR.codomain()) # needs sage.groups
|
|
565
|
+
[0, 1, 2]
|
|
566
|
+
"""
|
|
567
|
+
return self._index_map.values()
|