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,538 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
r"""
|
|
3
|
+
Free submodules of tensor modules defined by monoterm symmetries
|
|
4
|
+
|
|
5
|
+
AUTHORS:
|
|
6
|
+
|
|
7
|
+
- Matthias Koeppe (2020-2022): initial version
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
# ******************************************************************************
|
|
11
|
+
# Copyright (C) 2020-2022 Matthias Koeppe
|
|
12
|
+
#
|
|
13
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
14
|
+
# as published by the Free Software Foundation; either version 2 of
|
|
15
|
+
# the License, or (at your option) any later version.
|
|
16
|
+
# https://www.gnu.org/licenses/
|
|
17
|
+
# ******************************************************************************
|
|
18
|
+
|
|
19
|
+
import itertools
|
|
20
|
+
|
|
21
|
+
from sage.misc.cachefunc import cached_method
|
|
22
|
+
from sage.misc.lazy_attribute import lazy_attribute
|
|
23
|
+
from sage.sets.disjoint_set import DisjointSet
|
|
24
|
+
from sage.typeset.unicode_characters import unicode_otimes
|
|
25
|
+
|
|
26
|
+
from .comp import CompFullySym, CompFullyAntiSym, CompWithSym
|
|
27
|
+
from .tensor_free_module import TensorFreeModule
|
|
28
|
+
from .finite_rank_free_module import FiniteRankFreeModule_abstract
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class TensorFreeSubmodule_sym(TensorFreeModule):
|
|
32
|
+
r"""
|
|
33
|
+
Class for free submodules of tensor products of free modules
|
|
34
|
+
that are defined by some monoterm symmetries.
|
|
35
|
+
|
|
36
|
+
EXAMPLES::
|
|
37
|
+
|
|
38
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
39
|
+
sage: e = M.basis('e')
|
|
40
|
+
sage: T60M = M.tensor_module(6, 0); T60M
|
|
41
|
+
Free module of type-(6,0) tensors on the Rank-3 free module M over the Integer Ring
|
|
42
|
+
sage: T60M._name
|
|
43
|
+
'T^(6, 0)(M)'
|
|
44
|
+
sage: latex(T60M)
|
|
45
|
+
T^{(6, 0)}\left(M\right)
|
|
46
|
+
sage: T40Sym45M = M.tensor_module(6, 0, sym=((4, 5))); T40Sym45M
|
|
47
|
+
Free module of type-(6,0) tensors on the Rank-3 free module M over the Integer Ring,
|
|
48
|
+
with symmetry on the index positions (4, 5)
|
|
49
|
+
sage: T40Sym45M._name
|
|
50
|
+
'T^{0,1,2,3}(M)⊗Sym^{4,5}(M)'
|
|
51
|
+
sage: latex(T40Sym45M)
|
|
52
|
+
T^{\{0,1,2,3\}}(M) \otimes \mathrm{Sym}^{\{4,5\}}(M)
|
|
53
|
+
sage: Sym0123x45M = M.tensor_module(6, 0, sym=((0, 1, 2, 3), (4, 5))); Sym0123x45M
|
|
54
|
+
Free module of type-(6,0) tensors on the Rank-3 free module M over the Integer Ring,
|
|
55
|
+
with symmetry on the index positions (0, 1, 2, 3),
|
|
56
|
+
with symmetry on the index positions (4, 5)
|
|
57
|
+
sage: Sym0123x45M._name
|
|
58
|
+
'Sym^{0,1,2,3}(M)⊗Sym^{4,5}(M)'
|
|
59
|
+
sage: latex(Sym0123x45M)
|
|
60
|
+
\mathrm{Sym}^{\{0,1,2,3\}}(M) \otimes \mathrm{Sym}^{\{4,5\}}(M)
|
|
61
|
+
sage: Sym012x345M = M.tensor_module(6, 0, sym=((0, 1, 2), (3, 4, 5))); Sym012x345M
|
|
62
|
+
Free module of type-(6,0) tensors on the Rank-3 free module M over the Integer Ring,
|
|
63
|
+
with symmetry on the index positions (0, 1, 2),
|
|
64
|
+
with symmetry on the index positions (3, 4, 5)
|
|
65
|
+
sage: Sym012x345M._name
|
|
66
|
+
'Sym^{0,1,2}(M)⊗Sym^{3,4,5}(M)'
|
|
67
|
+
sage: latex(Sym012x345M)
|
|
68
|
+
\mathrm{Sym}^{\{0,1,2\}}(M) \otimes \mathrm{Sym}^{\{3,4,5\}}(M)
|
|
69
|
+
sage: Sym012345M = M.tensor_module(6, 0, sym=((0, 1, 2, 3, 4, 5))); Sym012345M
|
|
70
|
+
Free module of fully symmetric type-(6,0) tensors
|
|
71
|
+
on the Rank-3 free module M over the Integer Ring
|
|
72
|
+
sage: Sym012345M._name
|
|
73
|
+
'Sym^6(M)'
|
|
74
|
+
sage: latex(Sym012345M)
|
|
75
|
+
\mathrm{Sym}^6(M)
|
|
76
|
+
|
|
77
|
+
Canonical injections from submodules are coercions::
|
|
78
|
+
|
|
79
|
+
sage: Sym0123x45M.has_coerce_map_from(Sym012345M)
|
|
80
|
+
True
|
|
81
|
+
sage: T60M.has_coerce_map_from(Sym0123x45M)
|
|
82
|
+
True
|
|
83
|
+
sage: t = e[0] * e[0] * e[0] * e[0] * e[0] * e[0]
|
|
84
|
+
sage: t.parent()
|
|
85
|
+
Free module of type-(6,0) tensors on the Rank-3 free module M over the Integer Ring
|
|
86
|
+
sage: Sym012345M(t) is t
|
|
87
|
+
False
|
|
88
|
+
|
|
89
|
+
TESTS::
|
|
90
|
+
|
|
91
|
+
sage: T = M.tensor_module(4, 4, sym=((0, 1)), antisym=((4, 5))); T
|
|
92
|
+
Free module of type-(4,4) tensors on the Rank-3 free module M over the Integer Ring,
|
|
93
|
+
with symmetry on the index positions (0, 1),
|
|
94
|
+
with antisymmetry on the index positions (4, 5)
|
|
95
|
+
sage: T._name
|
|
96
|
+
'T^{2,3}(M)⊗T^{6,7}(M*)⊗Sym^{0,1}(M)⊗ASym^{4,5}(M*)'
|
|
97
|
+
sage: latex(T)
|
|
98
|
+
T^{\{2,3\}}(M) \otimes T^{\{6,7\}}(M^*) \otimes \mathrm{Sym}^{\{0,1\}}(M) \otimes \mathrm{ASym}^{\{4,5\}}(M^*)
|
|
99
|
+
"""
|
|
100
|
+
def __init__(self, fmodule, tensor_type, name=None, latex_name=None,
|
|
101
|
+
sym=None, antisym=None, *, category=None, ambient=None):
|
|
102
|
+
r"""
|
|
103
|
+
TESTS::
|
|
104
|
+
|
|
105
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
106
|
+
sage: e = M.basis('e')
|
|
107
|
+
sage: Sym0123x45M = M.tensor_module(6, 0, sym=((0, 1, 2, 3), (4, 5)))
|
|
108
|
+
sage: TestSuite(Sym0123x45M).run()
|
|
109
|
+
"""
|
|
110
|
+
self._fmodule = fmodule
|
|
111
|
+
self._tensor_type = tuple(tensor_type)
|
|
112
|
+
if ambient is None:
|
|
113
|
+
ambient = fmodule.tensor_module(*tensor_type)
|
|
114
|
+
self._ambient_module = ambient
|
|
115
|
+
self._sym = sym
|
|
116
|
+
self._antisym = antisym
|
|
117
|
+
basis_sym = self._basis_sym()
|
|
118
|
+
rank = len(list(basis_sym.non_redundant_index_generator()))
|
|
119
|
+
|
|
120
|
+
if name is None and fmodule._name is not None:
|
|
121
|
+
all_indices = tuple(range(tensor_type[0] + tensor_type[1]))
|
|
122
|
+
if isinstance(basis_sym, CompFullySym):
|
|
123
|
+
sym = [all_indices]
|
|
124
|
+
antisym = []
|
|
125
|
+
elif isinstance(basis_sym, CompFullyAntiSym):
|
|
126
|
+
sym = []
|
|
127
|
+
antisym = [all_indices]
|
|
128
|
+
elif isinstance(basis_sym, CompWithSym):
|
|
129
|
+
sym = basis_sym._sym
|
|
130
|
+
antisym = basis_sym._antisym
|
|
131
|
+
else:
|
|
132
|
+
sym = antisym = []
|
|
133
|
+
nosym_0 = [i for i in range(tensor_type[0])
|
|
134
|
+
if not any(i in s for s in sym) and not any(i in s for s in antisym)]
|
|
135
|
+
nosym_1 = [i for i in range(tensor_type[0], tensor_type[0] + tensor_type[1])
|
|
136
|
+
if not any(i in s for s in sym) and not any(i in s for s in antisym)]
|
|
137
|
+
nosym = [s for s in [nosym_0, nosym_1] if s]
|
|
138
|
+
|
|
139
|
+
def power_name(op, s, latex=False):
|
|
140
|
+
if s[0] < tensor_type[0]:
|
|
141
|
+
assert all(i < tensor_type[0] for i in s)
|
|
142
|
+
base = fmodule
|
|
143
|
+
full = tensor_type[0]
|
|
144
|
+
else:
|
|
145
|
+
assert all(i >= tensor_type[0] for i in s)
|
|
146
|
+
base = fmodule.dual()
|
|
147
|
+
full = tensor_type[1]
|
|
148
|
+
if len(s) == full:
|
|
149
|
+
superscript = str(full)
|
|
150
|
+
else:
|
|
151
|
+
superscript = ','.join(str(i) for i in s)
|
|
152
|
+
if latex:
|
|
153
|
+
superscript = r'\{' + superscript + r'\}'
|
|
154
|
+
else:
|
|
155
|
+
superscript = '{' + superscript + '}'
|
|
156
|
+
if latex:
|
|
157
|
+
if len(superscript) != 1:
|
|
158
|
+
superscript = '{' + superscript + '}'
|
|
159
|
+
if len(base._latex_name) > 3:
|
|
160
|
+
return op + '^' + superscript + r'\left(' + base._latex_name + r'\right)'
|
|
161
|
+
else:
|
|
162
|
+
return op + '^' + superscript + '(' + base._latex_name + ')'
|
|
163
|
+
else:
|
|
164
|
+
return op + '^' + superscript + '(' + base._name + ')'
|
|
165
|
+
|
|
166
|
+
name = unicode_otimes.join(itertools.chain(
|
|
167
|
+
(power_name('T', s, latex=False) for s in nosym),
|
|
168
|
+
(power_name('Sym', s, latex=False) for s in sym),
|
|
169
|
+
(power_name('ASym', s, latex=False) for s in antisym)))
|
|
170
|
+
latex_name = r' \otimes '.join(itertools.chain(
|
|
171
|
+
(power_name('T', s, latex=True) for s in nosym),
|
|
172
|
+
(power_name(r'\mathrm{Sym}', s, latex=True) for s in sym),
|
|
173
|
+
(power_name(r'\mathrm{ASym}', s, latex=True) for s in antisym)))
|
|
174
|
+
|
|
175
|
+
category = fmodule.category().TensorProducts().FiniteDimensional().Subobjects().or_subcategory(category)
|
|
176
|
+
# Skip TensorFreeModule.__init__
|
|
177
|
+
FiniteRankFreeModule_abstract.__init__(self, fmodule._ring, rank, name=name,
|
|
178
|
+
latex_name=latex_name,
|
|
179
|
+
category=category, ambient=ambient)
|
|
180
|
+
|
|
181
|
+
def construction(self):
|
|
182
|
+
# TODO: Define the symmetry group and its action (https://github.com/sagemath/sage/issues/34495),
|
|
183
|
+
# return the construction functor for invariant subobjects.
|
|
184
|
+
r"""
|
|
185
|
+
Return the functorial construction of ``self``.
|
|
186
|
+
|
|
187
|
+
This implementation just returns ``None``.
|
|
188
|
+
|
|
189
|
+
EXAMPLES::
|
|
190
|
+
|
|
191
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
192
|
+
sage: Sym2M = M.tensor_module(2, 0, sym=range(2)); Sym2M
|
|
193
|
+
Free module of fully symmetric type-(2,0) tensors on the Rank-3 free module M over the Integer Ring
|
|
194
|
+
sage: Sym2M.construction() is None
|
|
195
|
+
True
|
|
196
|
+
"""
|
|
197
|
+
return None
|
|
198
|
+
|
|
199
|
+
@cached_method
|
|
200
|
+
def _basis_sym(self):
|
|
201
|
+
r"""
|
|
202
|
+
Return an instance of :class:`~sage.tensor.modules.comp.Components`.
|
|
203
|
+
|
|
204
|
+
In the current implementation of :class:`~sage.tensor.modules.tensor_free_submodule.TensorFreeSubmodule_sym`,
|
|
205
|
+
it encodes the prescribed symmetry of ``self``.
|
|
206
|
+
|
|
207
|
+
EXAMPLES::
|
|
208
|
+
|
|
209
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
210
|
+
sage: Sym2M = M.tensor_module(2, 0, sym=range(2)); Sym2M
|
|
211
|
+
Free module of fully symmetric type-(2,0) tensors on the Rank-3 free module M over the Integer Ring
|
|
212
|
+
sage: c = Sym2M._basis_sym(); c
|
|
213
|
+
Fully symmetric 2-indices components w.r.t. (0, 1, 2)
|
|
214
|
+
"""
|
|
215
|
+
frame = tuple(self.base_module().irange())
|
|
216
|
+
# Need to call _element_constructor_ explicitly, or the passed arguments are dropped
|
|
217
|
+
tensor = self.ambient()._element_constructor_(sym=self._sym, antisym=self._antisym)
|
|
218
|
+
return tensor._new_comp(frame)
|
|
219
|
+
|
|
220
|
+
def _repr_(self):
|
|
221
|
+
r"""
|
|
222
|
+
Return a string representation of ``self``.
|
|
223
|
+
|
|
224
|
+
EXAMPLES::
|
|
225
|
+
|
|
226
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
227
|
+
sage: Sym2M = M.tensor_module(2, 0, sym=range(2)); Sym2M
|
|
228
|
+
Free module of fully symmetric type-(2,0) tensors
|
|
229
|
+
on the Rank-3 free module M over the Integer Ring
|
|
230
|
+
"""
|
|
231
|
+
prefix, suffix = self._basis_sym()._repr_symmetry()
|
|
232
|
+
return "Free module of {}type-({},{}) tensors on the {}{}".format(
|
|
233
|
+
prefix.lower(), self._tensor_type[0], self._tensor_type[1], self._fmodule, suffix)
|
|
234
|
+
|
|
235
|
+
def _is_symmetry_coarsening_of(self, coarser_comp, finer_comp):
|
|
236
|
+
r"""
|
|
237
|
+
Return whether ``coarser_comp`` has coarser symmetry than ``finer_comp``.
|
|
238
|
+
|
|
239
|
+
INPUT:
|
|
240
|
+
|
|
241
|
+
- ``coarser_comp``, ``finer_comp`` -- :class:`~sage.tensor.modules.comp.Components`
|
|
242
|
+
|
|
243
|
+
EXAMPLES::
|
|
244
|
+
|
|
245
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
246
|
+
sage: e = M.basis('e')
|
|
247
|
+
sage: T60M = M.tensor_module(6, 0)
|
|
248
|
+
sage: Sym0123x45M = M.tensor_module(6, 0, sym=((0, 1, 2, 3), (4, 5)))
|
|
249
|
+
sage: ten0123x45M = Sym0123x45M.an_element(); ten0123x45M
|
|
250
|
+
Type-(6,0) tensor on the Rank-3 free module M over the Integer Ring
|
|
251
|
+
sage: ten0123x45M.parent()
|
|
252
|
+
Free module of type-(6,0) tensors on the Rank-3 free module M over the Integer Ring,
|
|
253
|
+
with symmetry on the index positions (0, 1, 2, 3),
|
|
254
|
+
with symmetry on the index positions (4, 5)
|
|
255
|
+
sage: com0123x45M = ten0123x45M._components[e]; com0123x45M
|
|
256
|
+
6-indices components w.r.t. Basis (e_0,e_1,e_2)
|
|
257
|
+
on the Rank-3 free module M over the Integer Ring,
|
|
258
|
+
with symmetry on the index positions (0, 1, 2, 3),
|
|
259
|
+
with symmetry on the index positions (4, 5)
|
|
260
|
+
sage: Sym012x345M = M.tensor_module(6, 0, sym=((0, 1, 2), (3, 4, 5)))
|
|
261
|
+
sage: com012x345M = Sym012x345M.an_element()._components[e]; com012x345M
|
|
262
|
+
6-indices components w.r.t. Basis (e_0,e_1,e_2)
|
|
263
|
+
on the Rank-3 free module M over the Integer Ring,
|
|
264
|
+
with symmetry on the index positions (0, 1, 2),
|
|
265
|
+
with symmetry on the index positions (3, 4, 5)
|
|
266
|
+
sage: Sym012345M = M.tensor_module(6, 0, sym=((0, 1, 2, 3, 4, 5)))
|
|
267
|
+
sage: com012345M = Sym012345M.an_element()._components[e]; com012345M
|
|
268
|
+
Fully symmetric 6-indices components w.r.t. Basis (e_0,e_1,e_2)
|
|
269
|
+
on the Rank-3 free module M over the Integer Ring
|
|
270
|
+
sage: Sym0123x45M._is_symmetry_coarsening_of(com0123x45M, com012x345M)
|
|
271
|
+
False
|
|
272
|
+
sage: Sym0123x45M._is_symmetry_coarsening_of(com012345M, com012x345M)
|
|
273
|
+
True
|
|
274
|
+
"""
|
|
275
|
+
self_tensor_type = self.tensor_type()
|
|
276
|
+
|
|
277
|
+
def sym_antisym(comp):
|
|
278
|
+
if isinstance(comp, tuple):
|
|
279
|
+
sym, antisym = tuple
|
|
280
|
+
if sym is None:
|
|
281
|
+
sym = []
|
|
282
|
+
if antisym is None:
|
|
283
|
+
antisym = []
|
|
284
|
+
return sym, antisym
|
|
285
|
+
# Similar code is in Component.contract, should refactor.
|
|
286
|
+
try:
|
|
287
|
+
return comp._sym, comp._antisym
|
|
288
|
+
except AttributeError:
|
|
289
|
+
return [], []
|
|
290
|
+
|
|
291
|
+
def is_coarsening_of(self_sym_list, other_sym_list):
|
|
292
|
+
# Use the union-find data structure
|
|
293
|
+
S = DisjointSet(self_tensor_type[0] + self_tensor_type[1])
|
|
294
|
+
for index_set in self_sym_list:
|
|
295
|
+
i = index_set[0]
|
|
296
|
+
for j in index_set[1:]:
|
|
297
|
+
S.union(i, j)
|
|
298
|
+
for index_set in other_sym_list:
|
|
299
|
+
i = S.find(index_set[0])
|
|
300
|
+
for j in index_set[1:]:
|
|
301
|
+
if S.find(j) != i:
|
|
302
|
+
return False
|
|
303
|
+
return True
|
|
304
|
+
|
|
305
|
+
finer_sym, finer_antisym = sym_antisym(finer_comp)
|
|
306
|
+
if not finer_sym and not finer_antisym:
|
|
307
|
+
return True
|
|
308
|
+
coarser_sym, coarser_antisym = sym_antisym(coarser_comp)
|
|
309
|
+
if not is_coarsening_of(coarser_sym, finer_sym):
|
|
310
|
+
return False
|
|
311
|
+
if not is_coarsening_of(coarser_antisym, finer_antisym):
|
|
312
|
+
return False
|
|
313
|
+
return True
|
|
314
|
+
|
|
315
|
+
def _element_constructor_(self, comp=[], basis=None, name=None,
|
|
316
|
+
latex_name=None, sym=None, antisym=None):
|
|
317
|
+
r"""
|
|
318
|
+
TESTS::
|
|
319
|
+
|
|
320
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
321
|
+
sage: e = M.basis('e')
|
|
322
|
+
sage: T60M = M.tensor_module(6, 0)
|
|
323
|
+
sage: Sym0123x45M = M.tensor_module(6, 0, sym=((0, 1, 2, 3), (4, 5)))
|
|
324
|
+
sage: Sym0123x45M(e[0]*e[0]*e[0]*e[0]*e[1]*e[2])
|
|
325
|
+
Traceback (most recent call last):
|
|
326
|
+
...
|
|
327
|
+
ValueError: this tensor does not have the symmetries of
|
|
328
|
+
Free module of type-(6,0) tensors on the Rank-3 free module M over the Integer Ring,
|
|
329
|
+
with symmetry on the index positions (0, 1, 2, 3),
|
|
330
|
+
with symmetry on the index positions (4, 5)
|
|
331
|
+
sage: t = Sym0123x45M(e[0]*e[0]*e[0]*e[0]*e[1]*e[2] + e[0]*e[0]*e[0]*e[0]*e[2]*e[1]); t.disp()
|
|
332
|
+
e_0⊗e_0⊗e_0⊗e_0⊗e_1⊗e_2 + e_0⊗e_0⊗e_0⊗e_0⊗e_2⊗e_1
|
|
333
|
+
sage: t.parent()._name
|
|
334
|
+
'Sym^{0,1,2,3}(M)⊗Sym^{4,5}(M)'
|
|
335
|
+
"""
|
|
336
|
+
if sym is not None or antisym is not None:
|
|
337
|
+
# Refuse to create a tensor with finer symmetries
|
|
338
|
+
# than those defining the subspace
|
|
339
|
+
if not self._is_symmetry_coarsening_of((sym, antisym), self._basis_sym()):
|
|
340
|
+
raise ValueError(f"cannot create a tensor with symmetries {sym=}, {antisym=} "
|
|
341
|
+
f"as an element of {self}")
|
|
342
|
+
|
|
343
|
+
if sym is None:
|
|
344
|
+
sym = self._basis_sym()._sym
|
|
345
|
+
if antisym is None:
|
|
346
|
+
antisym = self._basis_sym()._antisym
|
|
347
|
+
|
|
348
|
+
resu = super()._element_constructor_(comp=comp,
|
|
349
|
+
basis=basis, name=name,
|
|
350
|
+
latex_name=latex_name,
|
|
351
|
+
sym=sym, antisym=antisym)
|
|
352
|
+
if not resu._components:
|
|
353
|
+
# fast path for zero tensor
|
|
354
|
+
return resu
|
|
355
|
+
|
|
356
|
+
try:
|
|
357
|
+
if self.reduce(resu):
|
|
358
|
+
raise ValueError(f"this tensor does not have the symmetries of {self}")
|
|
359
|
+
except TypeError:
|
|
360
|
+
# Averaging over the orbits of a tensor that does not have the required
|
|
361
|
+
# symmetries can lead to "TypeError: no conversion of this rational to integer"
|
|
362
|
+
raise ValueError(f"this tensor does not have the symmetries of {self}")
|
|
363
|
+
|
|
364
|
+
return resu
|
|
365
|
+
|
|
366
|
+
def is_submodule(self, other):
|
|
367
|
+
r"""
|
|
368
|
+
Return ``True`` if ``self`` is a submodule of ``other``.
|
|
369
|
+
|
|
370
|
+
EXAMPLES::
|
|
371
|
+
|
|
372
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
373
|
+
sage: T60M = M.tensor_module(6, 0)
|
|
374
|
+
sage: Sym0123x45M = M.tensor_module(6, 0, sym=((0, 1, 2, 3), (4, 5)))
|
|
375
|
+
sage: Sym012x345M = M.tensor_module(6, 0, sym=((0, 1, 2), (3, 4, 5)))
|
|
376
|
+
sage: Sym012345M = M.tensor_module(6, 0, sym=((0, 1, 2, 3, 4, 5)))
|
|
377
|
+
sage: Sym012345M.is_submodule(Sym012345M)
|
|
378
|
+
True
|
|
379
|
+
sage: Sym012345M.is_submodule(Sym0123x45M)
|
|
380
|
+
True
|
|
381
|
+
sage: Sym0123x45M.is_submodule(Sym012345M)
|
|
382
|
+
False
|
|
383
|
+
sage: Sym012x345M.is_submodule(Sym0123x45M)
|
|
384
|
+
False
|
|
385
|
+
sage: all(S.is_submodule(T60M) for S in (Sym0123x45M, Sym012x345M, Sym012345M))
|
|
386
|
+
True
|
|
387
|
+
"""
|
|
388
|
+
if super().is_submodule(other):
|
|
389
|
+
return True
|
|
390
|
+
self_base_module = self.base_module()
|
|
391
|
+
self_tensor_type = self.tensor_type()
|
|
392
|
+
try:
|
|
393
|
+
other_base_module = other.base_module()
|
|
394
|
+
other_tensor_type = other.tensor_type()
|
|
395
|
+
except AttributeError:
|
|
396
|
+
return False
|
|
397
|
+
if self_base_module != other_base_module:
|
|
398
|
+
return False
|
|
399
|
+
if self_tensor_type != other_tensor_type:
|
|
400
|
+
return False
|
|
401
|
+
|
|
402
|
+
other_comp = other._basis_sym()
|
|
403
|
+
return self._is_symmetry_coarsening_of(self._basis_sym(), other_comp)
|
|
404
|
+
|
|
405
|
+
@lazy_attribute
|
|
406
|
+
def lift(self):
|
|
407
|
+
r"""
|
|
408
|
+
The lift (embedding) map from ``self`` to the ambient space.
|
|
409
|
+
|
|
410
|
+
EXAMPLES::
|
|
411
|
+
|
|
412
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
413
|
+
sage: Sym0123x45M = M.tensor_module(6, 0, sym=((0, 1, 2, 3), (4, 5)))
|
|
414
|
+
sage: Sym0123x45M.lift
|
|
415
|
+
Generic morphism:
|
|
416
|
+
From: Free module of type-(6,0) tensors on the Rank-3 free module M over the Integer Ring,
|
|
417
|
+
with symmetry on the index positions (0, 1, 2, 3),
|
|
418
|
+
with symmetry on the index positions (4, 5)
|
|
419
|
+
To: Free module of type-(6,0) tensors on the Rank-3 free module M over the Integer Ring
|
|
420
|
+
"""
|
|
421
|
+
return self.module_morphism(function=lambda x: x, codomain=self.ambient())
|
|
422
|
+
|
|
423
|
+
@lazy_attribute
|
|
424
|
+
def reduce(self):
|
|
425
|
+
r"""
|
|
426
|
+
The reduce map.
|
|
427
|
+
|
|
428
|
+
This map reduces elements of the ambient space modulo this
|
|
429
|
+
submodule.
|
|
430
|
+
|
|
431
|
+
EXAMPLES::
|
|
432
|
+
|
|
433
|
+
sage: M = FiniteRankFreeModule(QQ, 3, name='M')
|
|
434
|
+
sage: e = M.basis('e')
|
|
435
|
+
sage: X = M.tensor_module(6, 0)
|
|
436
|
+
sage: Y = M.tensor_module(6, 0, sym=((0, 1, 2, 3), (4, 5)))
|
|
437
|
+
sage: Y.reduce
|
|
438
|
+
Generic endomorphism of
|
|
439
|
+
Free module of type-(6,0) tensors on the 3-dimensional vector space M over the Rational Field
|
|
440
|
+
sage: t = e[0]*e[0]*e[0]*e[0]*e[1]*e[2]; t.disp()
|
|
441
|
+
e_0⊗e_0⊗e_0⊗e_0⊗e_1⊗e_2 = e_0⊗e_0⊗e_0⊗e_0⊗e_1⊗e_2
|
|
442
|
+
sage: r = Y.reduce(t); r
|
|
443
|
+
Type-(6,0) tensor on the 3-dimensional vector space M over the Rational Field
|
|
444
|
+
sage: r.disp()
|
|
445
|
+
1/2 e_0⊗e_0⊗e_0⊗e_0⊗e_1⊗e_2 - 1/2 e_0⊗e_0⊗e_0⊗e_0⊗e_2⊗e_1
|
|
446
|
+
sage: r.parent()._name
|
|
447
|
+
'T^(6, 0)(M)'
|
|
448
|
+
|
|
449
|
+
If the base ring is not a field, this may fail::
|
|
450
|
+
|
|
451
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
452
|
+
sage: e = M.basis('e')
|
|
453
|
+
sage: X = M.tensor_module(6, 0)
|
|
454
|
+
sage: Y = M.tensor_module(6, 0, sym=((0, 1, 2, 3), (4, 5)))
|
|
455
|
+
sage: Y.reduce
|
|
456
|
+
Generic endomorphism of
|
|
457
|
+
Free module of type-(6,0) tensors on the Rank-3 free module M over the Integer Ring
|
|
458
|
+
sage: t = e[0]*e[0]*e[0]*e[0]*e[1]*e[2]; t.disp()
|
|
459
|
+
e_0⊗e_0⊗e_0⊗e_0⊗e_1⊗e_2 = e_0⊗e_0⊗e_0⊗e_0⊗e_1⊗e_2
|
|
460
|
+
sage: Y.reduce(t)
|
|
461
|
+
Traceback (most recent call last):
|
|
462
|
+
...
|
|
463
|
+
TypeError: no conversion of this rational to integer
|
|
464
|
+
|
|
465
|
+
TESTS::
|
|
466
|
+
|
|
467
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
468
|
+
sage: e = M.basis('e')
|
|
469
|
+
sage: X = M.tensor_module(6, 0)
|
|
470
|
+
sage: Y = M.tensor_module(6, 0, sym=((0, 1, 2, 3), (4, 5)))
|
|
471
|
+
sage: all(Y.reduce(u.lift()) == 0 for u in Y.basis('e'))
|
|
472
|
+
True
|
|
473
|
+
"""
|
|
474
|
+
sym = self._basis_sym()._sym
|
|
475
|
+
antisym = self._basis_sym()._antisym
|
|
476
|
+
|
|
477
|
+
def _reduce_element(x):
|
|
478
|
+
if not x._components:
|
|
479
|
+
# zero tensor - methods symmetrize, antisymmetrize are broken
|
|
480
|
+
return x
|
|
481
|
+
# TODO: Implement a fast symmetry check, either as part of the symmetrize/antisymmetrize methods,
|
|
482
|
+
# or as a separate method
|
|
483
|
+
symmetrized = x
|
|
484
|
+
for s in sym:
|
|
485
|
+
symmetrized = symmetrized.symmetrize(*s)
|
|
486
|
+
for s in antisym:
|
|
487
|
+
symmetrized = symmetrized.antisymmetrize(*s)
|
|
488
|
+
return x - symmetrized
|
|
489
|
+
|
|
490
|
+
return self.ambient().module_morphism(function=_reduce_element, codomain=self.ambient())
|
|
491
|
+
|
|
492
|
+
@lazy_attribute
|
|
493
|
+
def retract(self):
|
|
494
|
+
r"""
|
|
495
|
+
The retract map from the ambient space.
|
|
496
|
+
|
|
497
|
+
This is a partial map, which gives an error for elements not in the subspace.
|
|
498
|
+
|
|
499
|
+
Calling this map on elements of the ambient space is the same as calling the
|
|
500
|
+
element constructor of ``self``.
|
|
501
|
+
|
|
502
|
+
EXAMPLES::
|
|
503
|
+
|
|
504
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
505
|
+
sage: e = M.basis('e')
|
|
506
|
+
sage: X = M.tensor_module(6, 0)
|
|
507
|
+
sage: Y = M.tensor_module(6, 0, sym=((0, 1, 2, 3), (4, 5)))
|
|
508
|
+
sage: e_Y = Y.basis('e')
|
|
509
|
+
sage: Y.retract
|
|
510
|
+
Generic morphism:
|
|
511
|
+
From: Free module of type-(6,0) tensors on the Rank-3 free module M over the Integer Ring
|
|
512
|
+
To: Free module of type-(6,0) tensors on the Rank-3 free module M over the Integer Ring,
|
|
513
|
+
with symmetry on the index positions (0, 1, 2, 3),
|
|
514
|
+
with symmetry on the index positions (4, 5)
|
|
515
|
+
|
|
516
|
+
sage: t = e[0]*e[0]*e[0]*e[0]*e[1]*e[2]; t.disp()
|
|
517
|
+
e_0⊗e_0⊗e_0⊗e_0⊗e_1⊗e_2 = e_0⊗e_0⊗e_0⊗e_0⊗e_1⊗e_2
|
|
518
|
+
sage: Y.retract(t)
|
|
519
|
+
Traceback (most recent call last):
|
|
520
|
+
...
|
|
521
|
+
ValueError: this tensor does not have the symmetries of
|
|
522
|
+
Free module of type-(6,0) tensors on the Rank-3 free module M over the Integer Ring,
|
|
523
|
+
with symmetry on the index positions (0, 1, 2, 3),
|
|
524
|
+
with symmetry on the index positions (4, 5)
|
|
525
|
+
sage: t = e[0]*e[0]*e[0]*e[0]*e[1]*e[2] + e[0]*e[0]*e[0]*e[0]*e[2]*e[1]
|
|
526
|
+
sage: y = Y.retract(t); y
|
|
527
|
+
Type-(6,0) tensor on the Rank-3 free module M over the Integer Ring
|
|
528
|
+
sage: y.disp()
|
|
529
|
+
e_0⊗e_0⊗e_0⊗e_0⊗e_1⊗e_2 + e_0⊗e_0⊗e_0⊗e_0⊗e_2⊗e_1
|
|
530
|
+
sage: y.parent()._name
|
|
531
|
+
'Sym^{0,1,2,3}(M)⊗Sym^{4,5}(M)'
|
|
532
|
+
|
|
533
|
+
TESTS::
|
|
534
|
+
|
|
535
|
+
sage: all(Y.retract(u.lift()) == u for u in e_Y)
|
|
536
|
+
True
|
|
537
|
+
"""
|
|
538
|
+
return self.ambient().module_morphism(function=lambda x: self(x), codomain=self)
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
r"""
|
|
3
|
+
Standard bases of free submodules of tensor modules defined by some monoterm symmetries
|
|
4
|
+
|
|
5
|
+
AUTHORS:
|
|
6
|
+
|
|
7
|
+
- Matthias Koeppe (2020-2022): initial version
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
# ******************************************************************************
|
|
11
|
+
# Copyright (C) 2020-2022 Matthias Koeppe
|
|
12
|
+
#
|
|
13
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
14
|
+
# as published by the Free Software Foundation; either version 2 of
|
|
15
|
+
# the License, or (at your option) any later version.
|
|
16
|
+
# https://www.gnu.org/licenses/
|
|
17
|
+
# ******************************************************************************
|
|
18
|
+
|
|
19
|
+
from sage.tensor.modules.free_module_basis import Basis_abstract
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class TensorFreeSubmoduleBasis_sym(Basis_abstract):
|
|
23
|
+
r"""
|
|
24
|
+
Standard basis of a free submodule of a tensor module with prescribed monoterm symmetries.
|
|
25
|
+
|
|
26
|
+
EXAMPLES::
|
|
27
|
+
|
|
28
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
29
|
+
sage: T11 = M.tensor_module(1,1)
|
|
30
|
+
sage: e11 = T11.basis('e')
|
|
31
|
+
sage: for a in e11: a.display()
|
|
32
|
+
e_0⊗e^0
|
|
33
|
+
e_0⊗e^1
|
|
34
|
+
e_0⊗e^2
|
|
35
|
+
e_1⊗e^0
|
|
36
|
+
e_1⊗e^1
|
|
37
|
+
e_1⊗e^2
|
|
38
|
+
e_2⊗e^0
|
|
39
|
+
e_2⊗e^1
|
|
40
|
+
e_2⊗e^2
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
def __init__(self, tensor_module, symbol, latex_symbol=None, indices=None,
|
|
44
|
+
latex_indices=None, symbol_dual=None, latex_symbol_dual=None):
|
|
45
|
+
r"""
|
|
46
|
+
TESTS::
|
|
47
|
+
|
|
48
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
49
|
+
sage: e = M.basis('e')
|
|
50
|
+
sage: T11 = M.tensor_module(1,1)
|
|
51
|
+
sage: e_T11 = T11.basis('e')
|
|
52
|
+
sage: TestSuite(e_T11).run()
|
|
53
|
+
"""
|
|
54
|
+
base_module = tensor_module.base_module()
|
|
55
|
+
base_module_basis = base_module.basis(symbol, latex_symbol, indices,
|
|
56
|
+
latex_indices, symbol_dual, latex_symbol_dual)
|
|
57
|
+
super().__init__(tensor_module, symbol, latex_symbol, indices, latex_indices)
|
|
58
|
+
self._base_module_basis = base_module_basis
|
|
59
|
+
self._comp = tensor_module._basis_sym()
|
|
60
|
+
|
|
61
|
+
def _repr_(self):
|
|
62
|
+
r"""
|
|
63
|
+
Return a string representation of ``self``.
|
|
64
|
+
|
|
65
|
+
EXAMPLES::
|
|
66
|
+
|
|
67
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
68
|
+
sage: e = M.basis('e')
|
|
69
|
+
sage: T11 = M.tensor_module(1,1)
|
|
70
|
+
sage: e_T11 = T11.basis('e')
|
|
71
|
+
sage: e_T11
|
|
72
|
+
Standard basis on the
|
|
73
|
+
Free module of type-(1,1) tensors on the Rank-3 free module M over the Integer Ring
|
|
74
|
+
induced by Basis (e_0,e_1,e_2) on the Rank-3 free module M over the Integer Ring
|
|
75
|
+
"""
|
|
76
|
+
return f"Standard basis on the {self._fmodule} induced by {self._base_module_basis}"
|
|
77
|
+
|
|
78
|
+
def keys(self):
|
|
79
|
+
"""
|
|
80
|
+
Return an iterator for the keys (indices) of the family.
|
|
81
|
+
|
|
82
|
+
EXAMPLES::
|
|
83
|
+
|
|
84
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
85
|
+
sage: T11 = M.tensor_module(1,1)
|
|
86
|
+
sage: e11 = T11.basis('e')
|
|
87
|
+
sage: list(e11.keys())
|
|
88
|
+
[(0, 0), (0, 1), (0, 2),
|
|
89
|
+
(1, 0), (1, 1), (1, 2),
|
|
90
|
+
(2, 0), (2, 1), (2, 2)]
|
|
91
|
+
"""
|
|
92
|
+
yield from self._comp.non_redundant_index_generator()
|
|
93
|
+
|
|
94
|
+
def values(self):
|
|
95
|
+
"""
|
|
96
|
+
Return an iterator for the elements of the family.
|
|
97
|
+
|
|
98
|
+
EXAMPLES::
|
|
99
|
+
|
|
100
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
101
|
+
sage: T11 = M.tensor_module(1,1)
|
|
102
|
+
sage: e11 = T11.basis('e')
|
|
103
|
+
sage: [b.disp() for b in e11.values()]
|
|
104
|
+
[e_0⊗e^0, e_0⊗e^1, e_0⊗e^2,
|
|
105
|
+
e_1⊗e^0, e_1⊗e^1, e_1⊗e^2,
|
|
106
|
+
e_2⊗e^0, e_2⊗e^1, e_2⊗e^2]
|
|
107
|
+
"""
|
|
108
|
+
for ind in self.keys():
|
|
109
|
+
yield self[ind]
|
|
110
|
+
|
|
111
|
+
def __getitem__(self, index):
|
|
112
|
+
r"""
|
|
113
|
+
Return the basis element corresponding to a given index.
|
|
114
|
+
|
|
115
|
+
INPUT:
|
|
116
|
+
|
|
117
|
+
- ``index`` -- the index of the basis element
|
|
118
|
+
|
|
119
|
+
EXAMPLES::
|
|
120
|
+
|
|
121
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
122
|
+
sage: T11 = M.tensor_module(1,1)
|
|
123
|
+
sage: e11 = T11.basis('e')
|
|
124
|
+
sage: e11[1, 2].display()
|
|
125
|
+
e_1⊗e^2
|
|
126
|
+
|
|
127
|
+
sage: from sage.tensor.modules.tensor_free_submodule import TensorFreeSubmodule_sym
|
|
128
|
+
sage: Sym2M = TensorFreeSubmodule_sym(M, (2, 0), sym=range(2)); Sym2M
|
|
129
|
+
Free module of fully symmetric type-(2,0) tensors on the Rank-3 free module M over the Integer Ring
|
|
130
|
+
sage: eSym2M = Sym2M.basis('e')
|
|
131
|
+
sage: eSym2M[1, 1].display()
|
|
132
|
+
e_1⊗e_1
|
|
133
|
+
sage: eSym2M[1, 2].display()
|
|
134
|
+
e_1⊗e_2 + e_2⊗e_1
|
|
135
|
+
"""
|
|
136
|
+
tensor_module = self._fmodule
|
|
137
|
+
base_module_basis = self._base_module_basis
|
|
138
|
+
element = tensor_module([])
|
|
139
|
+
element.set_comp(base_module_basis)[index] = 1
|
|
140
|
+
return element
|