passagemath-modules 10.6.31rc3__cp314-cp314-musllinux_1_2_aarch64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of passagemath-modules might be problematic. Click here for more details.
- passagemath_modules-10.6.31rc3.dist-info/METADATA +281 -0
- passagemath_modules-10.6.31rc3.dist-info/RECORD +807 -0
- passagemath_modules-10.6.31rc3.dist-info/WHEEL +5 -0
- passagemath_modules-10.6.31rc3.dist-info/top_level.txt +2 -0
- passagemath_modules.libs/libgcc_s-2d945d6c.so.1 +0 -0
- passagemath_modules.libs/libgfortran-67378ab2.so.5.0.0 +0 -0
- passagemath_modules.libs/libgmp-28992bcb.so.10.5.0 +0 -0
- passagemath_modules.libs/libgsl-23768756.so.28.0.0 +0 -0
- passagemath_modules.libs/libmpc-7897025b.so.3.3.1 +0 -0
- passagemath_modules.libs/libmpfr-e34bb864.so.6.2.1 +0 -0
- passagemath_modules.libs/libopenblasp-r0-503f0c35.3.29.so +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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-linux-musl.so +0 -0
- sage/calculus/integration.pyx +698 -0
- sage/calculus/interpolation.cpython-314-aarch64-linux-musl.so +0 -0
- sage/calculus/interpolation.pxd +13 -0
- sage/calculus/interpolation.pyx +387 -0
- sage/calculus/interpolators.cpython-314-aarch64-linux-musl.so +0 -0
- sage/calculus/interpolators.pyx +326 -0
- sage/calculus/ode.cpython-314-aarch64-linux-musl.so +0 -0
- sage/calculus/ode.pxd +5 -0
- sage/calculus/ode.pyx +610 -0
- sage/calculus/riemann.cpython-314-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-linux-musl.so +0 -0
- sage/libs/mpmath/utils.pxd +4 -0
- sage/libs/mpmath/utils.pyx +319 -0
- sage/matrix/action.cpython-314-aarch64-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-aarch64-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-aarch64-linux-musl.so +0 -0
- sage/matrix/constructor.pyx +750 -0
- sage/matrix/docs.py +430 -0
- sage/matrix/echelon_matrix.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matrix/echelon_matrix.pyx +155 -0
- sage/matrix/matrix.pxd +2 -0
- sage/matrix/matrix0.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matrix/matrix0.pxd +68 -0
- sage/matrix/matrix0.pyx +6324 -0
- sage/matrix/matrix1.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matrix/matrix1.pxd +8 -0
- sage/matrix/matrix1.pyx +2851 -0
- sage/matrix/matrix2.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matrix/matrix2.pxd +25 -0
- sage/matrix/matrix2.pyx +20181 -0
- sage/matrix/matrix_cdv.cpython-314-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-linux-musl.so +0 -0
- sage/matroids/extension.pxd +34 -0
- sage/matroids/extension.pyx +519 -0
- sage/matroids/flats_matroid.cpython-314-aarch64-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-aarch64-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-aarch64-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-aarch64-linux-musl.so +0 -0
- sage/matroids/linear_matroid.pxd +180 -0
- sage/matroids/linear_matroid.pyx +6649 -0
- sage/matroids/matroid.cpython-314-aarch64-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-aarch64-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-aarch64-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-aarch64-linux-musl.so +0 -0
- sage/matroids/union_matroid.pxd +20 -0
- sage/matroids/union_matroid.pyx +331 -0
- sage/matroids/unpickling.cpython-314-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-linux-musl.so +0 -0
- sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
- sage/rings/function_field/khuri_makdisi.cpython-314-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-linux-musl.so +0 -0
- sage/stats/hmm/chmm.pyx +1595 -0
- sage/stats/hmm/distributions.cpython-314-aarch64-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-aarch64-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-aarch64-linux-musl.so +0 -0
- sage/stats/hmm/util.pxd +7 -0
- sage/stats/hmm/util.pyx +165 -0
- sage/stats/intlist.cpython-314-aarch64-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-aarch64-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,761 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
r"""
|
|
3
|
+
Alternating contravariant tensors on free modules
|
|
4
|
+
|
|
5
|
+
Given a free module `M` of finite rank over a commutative ring `R`
|
|
6
|
+
and a positive integer `p`, an *alternating contravariant tensor of
|
|
7
|
+
degree* `p` is a map
|
|
8
|
+
|
|
9
|
+
.. MATH::
|
|
10
|
+
|
|
11
|
+
a:\ \underbrace{M^*\times\cdots\times M^*}_{p\ \; \mbox{times}}
|
|
12
|
+
\longrightarrow R
|
|
13
|
+
|
|
14
|
+
that (i) is multilinear and (ii) vanishes whenever any of two of its
|
|
15
|
+
arguments are equal (`M^*` stands for the dual of `M`).
|
|
16
|
+
`a` is an element of the `p`-th exterior power of `M`, `\Lambda^p(M)`.
|
|
17
|
+
|
|
18
|
+
Alternating contravariant tensors are implemented via the class
|
|
19
|
+
:class:`AlternatingContrTensor`, which is a subclass of the generic tensor
|
|
20
|
+
class :class:`~sage.tensor.modules.free_module_tensor.FreeModuleTensor`.
|
|
21
|
+
|
|
22
|
+
AUTHORS:
|
|
23
|
+
|
|
24
|
+
- Eric Gourgoulhon (2017): initial version
|
|
25
|
+
|
|
26
|
+
REFERENCES:
|
|
27
|
+
|
|
28
|
+
- Chap. 23 of R. Godement : *Algebra* [God1968]_
|
|
29
|
+
- Chap. 15 of S. Lang : *Algebra* [Lan2002]_
|
|
30
|
+
"""
|
|
31
|
+
# ****************************************************************************
|
|
32
|
+
# Copyright (C) 2017 Eric Gourgoulhon <eric.gourgoulhon@obspm.fr>
|
|
33
|
+
#
|
|
34
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
35
|
+
# as published by the Free Software Foundation; either version 2 of
|
|
36
|
+
# the License, or (at your option) any later version.
|
|
37
|
+
# https://www.gnu.org/licenses/
|
|
38
|
+
# ****************************************************************************
|
|
39
|
+
|
|
40
|
+
from sage.tensor.modules.free_module_tensor import FreeModuleTensor
|
|
41
|
+
from sage.tensor.modules.comp import Components, CompFullyAntiSym
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class AlternatingContrTensor(FreeModuleTensor):
|
|
45
|
+
r"""
|
|
46
|
+
Alternating contravariant tensor on a free module of finite rank
|
|
47
|
+
over a commutative ring.
|
|
48
|
+
|
|
49
|
+
This is a Sage *element* class, the corresponding *parent* class being
|
|
50
|
+
:class:`~sage.tensor.modules.ext_pow_free_module.ExtPowerFreeModule`.
|
|
51
|
+
|
|
52
|
+
INPUT:
|
|
53
|
+
|
|
54
|
+
- ``fmodule`` -- free module `M` of finite rank over a commutative
|
|
55
|
+
ring `R`, as an instance of
|
|
56
|
+
:class:`~sage.tensor.modules.finite_rank_free_module.FiniteRankFreeModule`
|
|
57
|
+
- ``degree`` -- positive integer; the degree `p` of the alternating
|
|
58
|
+
contravariant tensor (i.e. the tensor rank)
|
|
59
|
+
- ``name`` -- (default: ``None``) string; name given to the
|
|
60
|
+
alternating contravariant tensor
|
|
61
|
+
- ``latex_name`` -- (default: ``None``) string; LaTeX symbol to
|
|
62
|
+
denote the alternating contravariant tensor; if none is provided,
|
|
63
|
+
``name`` is used
|
|
64
|
+
|
|
65
|
+
EXAMPLES:
|
|
66
|
+
|
|
67
|
+
Alternating contravariant tensor of degree 2 on a rank-3 free module::
|
|
68
|
+
|
|
69
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M', start_index=1)
|
|
70
|
+
sage: e = M.basis('e')
|
|
71
|
+
sage: a = M.alternating_contravariant_tensor(2, name='a') ; a
|
|
72
|
+
Alternating contravariant tensor a of degree 2 on the Rank-3
|
|
73
|
+
free module M over the Integer Ring
|
|
74
|
+
sage: type(a)
|
|
75
|
+
<class 'sage.tensor.modules.ext_pow_free_module.ExtPowerFreeModule_with_category.element_class'>
|
|
76
|
+
sage: a.parent()
|
|
77
|
+
2nd exterior power of the Rank-3 free module M over the Integer Ring
|
|
78
|
+
sage: a[1,2], a[2,3] = 4, -3
|
|
79
|
+
sage: a.display(e)
|
|
80
|
+
a = 4 e_1∧e_2 - 3 e_2∧e_3
|
|
81
|
+
|
|
82
|
+
The alternating contravariant tensor acting on the dual basis elements::
|
|
83
|
+
|
|
84
|
+
sage: f = e.dual_basis(); f
|
|
85
|
+
Dual basis (e^1,e^2,e^3) on the Rank-3 free module M over the
|
|
86
|
+
Integer Ring
|
|
87
|
+
sage: a(f[1],f[2])
|
|
88
|
+
4
|
|
89
|
+
sage: a(f[1],f[3])
|
|
90
|
+
0
|
|
91
|
+
sage: a(f[2],f[3])
|
|
92
|
+
-3
|
|
93
|
+
sage: a(f[2],f[1])
|
|
94
|
+
-4
|
|
95
|
+
|
|
96
|
+
An alternating contravariant tensor of degree 1 is an element
|
|
97
|
+
of the module `M`::
|
|
98
|
+
|
|
99
|
+
sage: b = M.alternating_contravariant_tensor(1, name='b') ; b
|
|
100
|
+
Element b of the Rank-3 free module M over the Integer Ring
|
|
101
|
+
sage: b[:] = [2,-1,3] # components w.r.t. the module's default basis (e)
|
|
102
|
+
sage: b.parent() is M
|
|
103
|
+
True
|
|
104
|
+
|
|
105
|
+
The standard tensor operations apply to alternating contravariant
|
|
106
|
+
tensors, like the extraction of components with respect to a
|
|
107
|
+
given basis::
|
|
108
|
+
|
|
109
|
+
sage: a[e,1,2]
|
|
110
|
+
4
|
|
111
|
+
sage: a[1,2] # since e is the module's default basis
|
|
112
|
+
4
|
|
113
|
+
sage: all( a[i,j] == - a[j,i] for i in {1,2,3} for j in {1,2,3} )
|
|
114
|
+
True
|
|
115
|
+
|
|
116
|
+
the tensor product::
|
|
117
|
+
|
|
118
|
+
sage: c = b*b ; c
|
|
119
|
+
Type-(2,0) tensor b⊗b on the Rank-3 free module M over the
|
|
120
|
+
Integer Ring
|
|
121
|
+
sage: c.symmetries()
|
|
122
|
+
symmetry: (0, 1); no antisymmetry
|
|
123
|
+
sage: c.parent()
|
|
124
|
+
Free module of type-(2,0) tensors on the Rank-3 free module M
|
|
125
|
+
over the Integer Ring
|
|
126
|
+
sage: c.display(e)
|
|
127
|
+
b⊗b = 4 e_1⊗e_1 - 2 e_1⊗e_2 + 6 e_1⊗e_3 - 2 e_2⊗e_1 + e_2⊗e_2
|
|
128
|
+
- 3 e_2⊗e_3 + 6 e_3⊗e_1 - 3 e_3⊗e_2 + 9 e_3⊗e_3
|
|
129
|
+
|
|
130
|
+
the contractions::
|
|
131
|
+
|
|
132
|
+
sage: w = f[1] + f[2] + f[3] # a linear form
|
|
133
|
+
sage: s = a.contract(w) ; s
|
|
134
|
+
Element of the Rank-3 free module M over the Integer Ring
|
|
135
|
+
sage: s.display(e)
|
|
136
|
+
4 e_1 - 7 e_2 + 3 e_3
|
|
137
|
+
|
|
138
|
+
or tensor arithmetics::
|
|
139
|
+
|
|
140
|
+
sage: s = 3*a + c ; s
|
|
141
|
+
Type-(2,0) tensor on the Rank-3 free module M over the Integer Ring
|
|
142
|
+
sage: s.parent()
|
|
143
|
+
Free module of type-(2,0) tensors on the Rank-3 free module M
|
|
144
|
+
over the Integer Ring
|
|
145
|
+
sage: s.display(e)
|
|
146
|
+
4 e_1⊗e_1 + 10 e_1⊗e_2 + 6 e_1⊗e_3 - 14 e_2⊗e_1 + e_2⊗e_2
|
|
147
|
+
- 12 e_2⊗e_3 + 6 e_3⊗e_1 + 6 e_3⊗e_2 + 9 e_3⊗e_3
|
|
148
|
+
|
|
149
|
+
Note that tensor arithmetics preserves the alternating character if
|
|
150
|
+
both operands are alternating::
|
|
151
|
+
|
|
152
|
+
sage: s = a - 2*a ; s
|
|
153
|
+
Alternating contravariant tensor of degree 2 on the Rank-3 free
|
|
154
|
+
module M over the Integer Ring
|
|
155
|
+
sage: s.parent() # note the difference with s = 3*a + c above
|
|
156
|
+
2nd exterior power of the Rank-3 free module M over the Integer
|
|
157
|
+
Ring
|
|
158
|
+
sage: s == -a
|
|
159
|
+
True
|
|
160
|
+
|
|
161
|
+
An operation specific to alternating contravariant tensors is of
|
|
162
|
+
course the exterior product::
|
|
163
|
+
|
|
164
|
+
sage: s = a.wedge(b) ; s
|
|
165
|
+
Alternating contravariant tensor a∧b of degree 3 on the Rank-3 free
|
|
166
|
+
module M over the Integer Ring
|
|
167
|
+
sage: s.parent()
|
|
168
|
+
3rd exterior power of the Rank-3 free module M over the Integer Ring
|
|
169
|
+
sage: s.display(e)
|
|
170
|
+
a∧b = 6 e_1∧e_2∧e_3
|
|
171
|
+
sage: s[1,2,3] == a[1,2]*b[3] + a[2,3]*b[1] + a[3,1]*b[2]
|
|
172
|
+
True
|
|
173
|
+
|
|
174
|
+
The exterior product is nilpotent on module elements::
|
|
175
|
+
|
|
176
|
+
sage: s = b.wedge(b) ; s
|
|
177
|
+
Alternating contravariant tensor b∧b of degree 2 on the Rank-3 free
|
|
178
|
+
module M over the Integer Ring
|
|
179
|
+
sage: s.display(e)
|
|
180
|
+
b∧b = 0
|
|
181
|
+
"""
|
|
182
|
+
def __init__(self, fmodule, degree, name=None, latex_name=None):
|
|
183
|
+
r"""
|
|
184
|
+
Initialize ``self``.
|
|
185
|
+
|
|
186
|
+
TESTS::
|
|
187
|
+
|
|
188
|
+
sage: from sage.tensor.modules.alternating_contr_tensor import AlternatingContrTensor
|
|
189
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
190
|
+
sage: e = M.basis('e')
|
|
191
|
+
sage: a = AlternatingContrTensor(M, 2, name='a')
|
|
192
|
+
sage: a[e,0,1] = 2
|
|
193
|
+
sage: TestSuite(a).run(skip='_test_category') # see below
|
|
194
|
+
|
|
195
|
+
In the above test suite, _test_category fails because a is not an
|
|
196
|
+
instance of a.parent().category().element_class. Actually alternating
|
|
197
|
+
tensors must be constructed via ExtPowerFreeModule.element_class and
|
|
198
|
+
not by a direct call to AlternatingContrTensor::
|
|
199
|
+
|
|
200
|
+
sage: a1 = M.exterior_power(2).element_class(M, 2, name='a')
|
|
201
|
+
sage: a1[e,0,1] = 2
|
|
202
|
+
sage: TestSuite(a1).run()
|
|
203
|
+
"""
|
|
204
|
+
FreeModuleTensor.__init__(self, fmodule, (degree,0), name=name,
|
|
205
|
+
latex_name=latex_name,
|
|
206
|
+
antisym=range(degree),
|
|
207
|
+
parent=fmodule.exterior_power(degree))
|
|
208
|
+
|
|
209
|
+
def _repr_(self):
|
|
210
|
+
r"""
|
|
211
|
+
Return a string representation of ``self``.
|
|
212
|
+
|
|
213
|
+
EXAMPLES::
|
|
214
|
+
|
|
215
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
216
|
+
sage: M.alternating_contravariant_tensor(1)
|
|
217
|
+
Element of the Rank-3 free module M over the Integer Ring
|
|
218
|
+
sage: M.alternating_contravariant_tensor(1, name='a')
|
|
219
|
+
Element a of the Rank-3 free module M over the Integer Ring
|
|
220
|
+
sage: M.alternating_contravariant_tensor(2)
|
|
221
|
+
Alternating contravariant tensor of degree 2 on the Rank-3 free
|
|
222
|
+
module M over the Integer Ring
|
|
223
|
+
sage: M.alternating_contravariant_tensor(2, name='a')
|
|
224
|
+
Alternating contravariant tensor a of degree 2 on the Rank-3 free
|
|
225
|
+
module M over the Integer Ring
|
|
226
|
+
"""
|
|
227
|
+
if self._tensor_rank == 1:
|
|
228
|
+
description = "Element "
|
|
229
|
+
if self._name is not None:
|
|
230
|
+
description += self._name + " "
|
|
231
|
+
description += "of the {}".format(self._fmodule)
|
|
232
|
+
else:
|
|
233
|
+
description = "Alternating contravariant tensor "
|
|
234
|
+
if self._name is not None:
|
|
235
|
+
description += self._name + " "
|
|
236
|
+
description += "of degree {} ".format(self._tensor_rank)
|
|
237
|
+
description += "on the {}".format(self._fmodule)
|
|
238
|
+
return description
|
|
239
|
+
|
|
240
|
+
def _new_instance(self):
|
|
241
|
+
r"""
|
|
242
|
+
Create an instance of the same class as ``self``, on the same module
|
|
243
|
+
and of the same degree.
|
|
244
|
+
|
|
245
|
+
EXAMPLES::
|
|
246
|
+
|
|
247
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
248
|
+
sage: a = M.alternating_contravariant_tensor(2, name='a')
|
|
249
|
+
sage: a._new_instance()
|
|
250
|
+
Alternating contravariant tensor of degree 2 on the Rank-3 free
|
|
251
|
+
module M over the Integer Ring
|
|
252
|
+
sage: a._new_instance().parent() is a.parent()
|
|
253
|
+
True
|
|
254
|
+
"""
|
|
255
|
+
return self.__class__(self._fmodule, self._tensor_rank)
|
|
256
|
+
|
|
257
|
+
def _new_comp(self, basis):
|
|
258
|
+
r"""
|
|
259
|
+
Create some (uninitialized) components of ``self`` in a given basis.
|
|
260
|
+
|
|
261
|
+
This method, which is already implemented in
|
|
262
|
+
:meth:`FreeModuleTensor._new_comp`, is redefined here for efficiency.
|
|
263
|
+
|
|
264
|
+
INPUT:
|
|
265
|
+
|
|
266
|
+
- ``basis`` -- basis of the free module on which ``self`` is defined
|
|
267
|
+
|
|
268
|
+
OUTPUT:
|
|
269
|
+
|
|
270
|
+
- an instance of :class:`~sage.tensor.modules.comp.CompFullyAntiSym`,
|
|
271
|
+
or of :class:`~sage.tensor.modules.comp.Components` if
|
|
272
|
+
the degree of ``self`` is 1.
|
|
273
|
+
|
|
274
|
+
EXAMPLES::
|
|
275
|
+
|
|
276
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
277
|
+
sage: e = M.basis('e')
|
|
278
|
+
sage: a = M.alternating_contravariant_tensor(2, name='a')
|
|
279
|
+
sage: a._new_comp(e)
|
|
280
|
+
Fully antisymmetric 2-indices components w.r.t. Basis (e_0,e_1,e_2)
|
|
281
|
+
on the Rank-3 free module M over the Integer Ring
|
|
282
|
+
sage: a = M.alternating_contravariant_tensor(1)
|
|
283
|
+
sage: a._new_comp(e)
|
|
284
|
+
1-index components w.r.t. Basis (e_0,e_1,e_2) on the Rank-3 free
|
|
285
|
+
module M over the Integer Ring
|
|
286
|
+
"""
|
|
287
|
+
fmodule = self._fmodule # the base free module
|
|
288
|
+
if self._tensor_rank == 1:
|
|
289
|
+
return Components(fmodule._ring, basis, 1,
|
|
290
|
+
start_index=fmodule._sindex,
|
|
291
|
+
output_formatter=fmodule._output_formatter)
|
|
292
|
+
|
|
293
|
+
return CompFullyAntiSym(fmodule._ring, basis, self._tensor_rank,
|
|
294
|
+
start_index=fmodule._sindex,
|
|
295
|
+
output_formatter=fmodule._output_formatter)
|
|
296
|
+
|
|
297
|
+
def degree(self):
|
|
298
|
+
r"""
|
|
299
|
+
Return the degree of ``self``.
|
|
300
|
+
|
|
301
|
+
EXAMPLES::
|
|
302
|
+
|
|
303
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
304
|
+
sage: a = M.alternating_contravariant_tensor(2, name='a')
|
|
305
|
+
sage: a.degree()
|
|
306
|
+
2
|
|
307
|
+
"""
|
|
308
|
+
return self._tensor_rank
|
|
309
|
+
|
|
310
|
+
def display(self, basis=None, format_spec=None):
|
|
311
|
+
r"""
|
|
312
|
+
Display the alternating contravariant tensor ``self`` in terms
|
|
313
|
+
of its expansion w.r.t. a given module basis.
|
|
314
|
+
|
|
315
|
+
The expansion is actually performed onto exterior products of
|
|
316
|
+
elements of ``basis`` (see examples below). The output is either
|
|
317
|
+
text-formatted (console mode) or LaTeX-formatted (notebook mode).
|
|
318
|
+
|
|
319
|
+
INPUT:
|
|
320
|
+
|
|
321
|
+
- ``basis`` -- (default: ``None``) basis of the free module with
|
|
322
|
+
respect to which ``self`` is expanded; if none is provided,
|
|
323
|
+
the module's default basis is assumed
|
|
324
|
+
- ``format_spec`` -- (default: ``None``) format specification
|
|
325
|
+
passed to ``self._fmodule._output_formatter`` to format the
|
|
326
|
+
output
|
|
327
|
+
|
|
328
|
+
EXAMPLES:
|
|
329
|
+
|
|
330
|
+
Display of an alternating contravariant tensor of degree 2 on a rank-3
|
|
331
|
+
free module::
|
|
332
|
+
|
|
333
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
334
|
+
sage: e = M.basis('e')
|
|
335
|
+
sage: a = M.alternating_contravariant_tensor(2, 'a', latex_name=r'\alpha')
|
|
336
|
+
sage: a[0,1], a[0,2], a[1,2] = 3, 2, -1
|
|
337
|
+
sage: a.display()
|
|
338
|
+
a = 3 e_0∧e_1 + 2 e_0∧e_2 - e_1∧e_2
|
|
339
|
+
sage: latex(a.display()) # display in the notebook
|
|
340
|
+
\alpha = 3 e_{0}\wedge e_{1} + 2 e_{0}\wedge e_{2} -e_{1}\wedge e_{2}
|
|
341
|
+
|
|
342
|
+
Display of an alternating contravariant tensor of degree 3 on a rank-3
|
|
343
|
+
free module::
|
|
344
|
+
|
|
345
|
+
sage: b = M.alternating_contravariant_tensor(3, 'b')
|
|
346
|
+
sage: b[0,1,2] = 4
|
|
347
|
+
sage: b.display()
|
|
348
|
+
b = 4 e_0∧e_1∧e_2
|
|
349
|
+
sage: latex(b.display())
|
|
350
|
+
b = 4 e_{0}\wedge e_{1}\wedge e_{2}
|
|
351
|
+
|
|
352
|
+
Display of a vanishing alternating contravariant tensor::
|
|
353
|
+
|
|
354
|
+
sage: b[0,1,2] = 0 # the only independent component set to zero
|
|
355
|
+
sage: b.is_zero()
|
|
356
|
+
True
|
|
357
|
+
sage: b.display()
|
|
358
|
+
b = 0
|
|
359
|
+
sage: latex(b.display())
|
|
360
|
+
b = 0
|
|
361
|
+
sage: b[0,1,2] = 4 # value restored for what follows
|
|
362
|
+
|
|
363
|
+
Display in a basis which is not the default one::
|
|
364
|
+
|
|
365
|
+
sage: aut = M.automorphism(matrix=[[0,1,0], [0,0,-1], [1,0,0]],
|
|
366
|
+
....: basis=e)
|
|
367
|
+
sage: f = e.new_basis(aut, 'f')
|
|
368
|
+
sage: a.display(f)
|
|
369
|
+
a = -2 f_0∧f_1 - f_0∧f_2 - 3 f_1∧f_2
|
|
370
|
+
sage: a.disp(f) # shortcut notation
|
|
371
|
+
a = -2 f_0∧f_1 - f_0∧f_2 - 3 f_1∧f_2
|
|
372
|
+
sage: b.display(f)
|
|
373
|
+
b = -4 f_0∧f_1∧f_2
|
|
374
|
+
|
|
375
|
+
The output format can be set via the argument ``output_formatter``
|
|
376
|
+
passed at the module construction::
|
|
377
|
+
|
|
378
|
+
sage: N = FiniteRankFreeModule(QQ, 3, name='N', start_index=1,
|
|
379
|
+
....: output_formatter=Rational.numerical_approx)
|
|
380
|
+
sage: e = N.basis('e')
|
|
381
|
+
sage: a = N.alternating_contravariant_tensor(2, 'a')
|
|
382
|
+
sage: a[1,2], a[1,3], a[2,3] = 1/3, 5/2, 4
|
|
383
|
+
sage: a.display() # default format (53 bits of precision)
|
|
384
|
+
a = 0.333333333333333 e_1∧e_2 + 2.50000000000000 e_1∧e_3
|
|
385
|
+
+ 4.00000000000000 e_2∧e_3
|
|
386
|
+
|
|
387
|
+
The output format is then controlled by the argument ``format_spec`` of
|
|
388
|
+
the method :meth:`display`::
|
|
389
|
+
|
|
390
|
+
sage: a.display(format_spec=10) # 10 bits of precision
|
|
391
|
+
a = 0.33 e_1∧e_2 + 2.5 e_1∧e_3 + 4.0 e_2∧e_3
|
|
392
|
+
"""
|
|
393
|
+
from sage.misc.latex import latex
|
|
394
|
+
from sage.typeset.unicode_characters import unicode_wedge
|
|
395
|
+
from .format_utilities import is_atomic, FormattedExpansion
|
|
396
|
+
basis, format_spec = self._preparse_display(basis=basis,
|
|
397
|
+
format_spec=format_spec)
|
|
398
|
+
comp = self.comp(basis)
|
|
399
|
+
terms_txt = []
|
|
400
|
+
terms_latex = []
|
|
401
|
+
for ind in comp.non_redundant_index_generator():
|
|
402
|
+
ind_arg = ind + (format_spec,)
|
|
403
|
+
coef = comp[ind_arg]
|
|
404
|
+
# Check whether the coefficient is zero, preferably via
|
|
405
|
+
# the fast method is_trivial_zero():
|
|
406
|
+
if hasattr(coef, 'is_trivial_zero'):
|
|
407
|
+
zero_coef = coef.is_trivial_zero()
|
|
408
|
+
else:
|
|
409
|
+
zero_coef = coef == 0
|
|
410
|
+
if not zero_coef:
|
|
411
|
+
bases_txt = []
|
|
412
|
+
bases_latex = []
|
|
413
|
+
for k in range(self._tensor_rank):
|
|
414
|
+
bases_txt.append(basis[ind[k]]._name)
|
|
415
|
+
bases_latex.append(latex(basis[ind[k]]))
|
|
416
|
+
basis_term_txt = unicode_wedge.join(bases_txt)
|
|
417
|
+
basis_term_latex = r'\wedge '.join(bases_latex)
|
|
418
|
+
coef_txt = repr(coef)
|
|
419
|
+
if coef_txt == '1':
|
|
420
|
+
terms_txt.append(basis_term_txt)
|
|
421
|
+
terms_latex.append(basis_term_latex)
|
|
422
|
+
elif coef_txt == '-1':
|
|
423
|
+
terms_txt.append('-' + basis_term_txt)
|
|
424
|
+
terms_latex.append('-' + basis_term_latex)
|
|
425
|
+
else:
|
|
426
|
+
coef_latex = latex(coef)
|
|
427
|
+
if is_atomic(coef_txt):
|
|
428
|
+
terms_txt.append(coef_txt + ' ' + basis_term_txt)
|
|
429
|
+
else:
|
|
430
|
+
terms_txt.append('(' + coef_txt + ') ' +
|
|
431
|
+
basis_term_txt)
|
|
432
|
+
if is_atomic(coef_latex):
|
|
433
|
+
terms_latex.append(coef_latex + basis_term_latex)
|
|
434
|
+
else:
|
|
435
|
+
terms_latex.append(r'\left(' + coef_latex +
|
|
436
|
+
r'\right)' + basis_term_latex)
|
|
437
|
+
if not terms_txt:
|
|
438
|
+
expansion_txt = '0'
|
|
439
|
+
else:
|
|
440
|
+
expansion_txt = terms_txt[0]
|
|
441
|
+
for term in terms_txt[1:]:
|
|
442
|
+
if term[0] == '-':
|
|
443
|
+
expansion_txt += ' - ' + term[1:]
|
|
444
|
+
else:
|
|
445
|
+
expansion_txt += ' + ' + term
|
|
446
|
+
if not terms_latex:
|
|
447
|
+
expansion_latex = '0'
|
|
448
|
+
else:
|
|
449
|
+
expansion_latex = terms_latex[0]
|
|
450
|
+
for term in terms_latex[1:]:
|
|
451
|
+
if term[0] == '-':
|
|
452
|
+
expansion_latex += term
|
|
453
|
+
else:
|
|
454
|
+
expansion_latex += '+' + term
|
|
455
|
+
if self._name is None:
|
|
456
|
+
resu_txt = expansion_txt
|
|
457
|
+
else:
|
|
458
|
+
resu_txt = self._name + ' = ' + expansion_txt
|
|
459
|
+
if self._latex_name is None:
|
|
460
|
+
resu_latex = expansion_latex
|
|
461
|
+
else:
|
|
462
|
+
resu_latex = latex(self) + ' = ' + expansion_latex
|
|
463
|
+
return FormattedExpansion(resu_txt, resu_latex)
|
|
464
|
+
|
|
465
|
+
disp = display
|
|
466
|
+
|
|
467
|
+
def wedge(self, other):
|
|
468
|
+
r"""
|
|
469
|
+
Exterior product of ``self`` with the alternating contravariant
|
|
470
|
+
tensor ``other``.
|
|
471
|
+
|
|
472
|
+
INPUT:
|
|
473
|
+
|
|
474
|
+
- ``other`` -- an alternating contravariant tensor
|
|
475
|
+
|
|
476
|
+
OUTPUT:
|
|
477
|
+
|
|
478
|
+
- instance of :class:`AlternatingContrTensor` representing the
|
|
479
|
+
exterior product ``self ∧ other``
|
|
480
|
+
|
|
481
|
+
EXAMPLES:
|
|
482
|
+
|
|
483
|
+
Exterior product of two module elements::
|
|
484
|
+
|
|
485
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
486
|
+
sage: e = M.basis('e')
|
|
487
|
+
sage: a = M([1,-3,4], basis=e, name='A')
|
|
488
|
+
sage: b = M([2,-1,2], basis=e, name='B')
|
|
489
|
+
sage: c = a.wedge(b) ; c
|
|
490
|
+
Alternating contravariant tensor A∧B of degree 2 on the Rank-3
|
|
491
|
+
free module M over the Integer Ring
|
|
492
|
+
sage: c.display()
|
|
493
|
+
A∧B = 5 e_0∧e_1 - 6 e_0∧e_2 - 2 e_1∧e_2
|
|
494
|
+
sage: latex(c)
|
|
495
|
+
A\wedge B
|
|
496
|
+
sage: latex(c.display())
|
|
497
|
+
A\wedge B = 5 e_{0}\wedge e_{1} -6 e_{0}\wedge e_{2}
|
|
498
|
+
-2 e_{1}\wedge e_{2}
|
|
499
|
+
|
|
500
|
+
Test of the computation::
|
|
501
|
+
|
|
502
|
+
sage: a.wedge(b) == a*b - b*a
|
|
503
|
+
True
|
|
504
|
+
|
|
505
|
+
Exterior product of a module element and an alternating contravariant
|
|
506
|
+
tensor of degree 2::
|
|
507
|
+
|
|
508
|
+
sage: d = M([-1,2,4], basis=e, name='D')
|
|
509
|
+
sage: s = d.wedge(c) ; s
|
|
510
|
+
Alternating contravariant tensor D∧A∧B of degree 3 on the Rank-3
|
|
511
|
+
free module M over the Integer Ring
|
|
512
|
+
sage: s.display()
|
|
513
|
+
D∧A∧B = 34 e_0∧e_1∧e_2
|
|
514
|
+
|
|
515
|
+
Test of the computation::
|
|
516
|
+
|
|
517
|
+
sage: s[0,1,2] == d[0]*c[1,2] + d[1]*c[2,0] + d[2]*c[0,1]
|
|
518
|
+
True
|
|
519
|
+
|
|
520
|
+
Let us check that the exterior product is associative::
|
|
521
|
+
|
|
522
|
+
sage: d.wedge(a.wedge(b)) == (d.wedge(a)).wedge(b)
|
|
523
|
+
True
|
|
524
|
+
|
|
525
|
+
and that it is graded anticommutative::
|
|
526
|
+
|
|
527
|
+
sage: a.wedge(b) == - b.wedge(a)
|
|
528
|
+
True
|
|
529
|
+
sage: d.wedge(c) == c.wedge(d)
|
|
530
|
+
True
|
|
531
|
+
"""
|
|
532
|
+
from sage.typeset.unicode_characters import unicode_wedge
|
|
533
|
+
from .format_utilities import is_atomic
|
|
534
|
+
if not isinstance(other, AlternatingContrTensor):
|
|
535
|
+
raise TypeError("the second argument for the exterior product " +
|
|
536
|
+
"must be an alternating contravariant tensor")
|
|
537
|
+
if other._tensor_rank == 0:
|
|
538
|
+
return other*self
|
|
539
|
+
fmodule = self._fmodule
|
|
540
|
+
basis = self.common_basis(other)
|
|
541
|
+
if basis is None:
|
|
542
|
+
raise ValueError("no common basis for the exterior product")
|
|
543
|
+
rank_r = self._tensor_rank + other._tensor_rank
|
|
544
|
+
cmp_s = self._components[basis]
|
|
545
|
+
cmp_o = other._components[basis]
|
|
546
|
+
cmp_r = CompFullyAntiSym(fmodule._ring, basis, rank_r,
|
|
547
|
+
start_index=fmodule._sindex,
|
|
548
|
+
output_formatter=fmodule._output_formatter)
|
|
549
|
+
for ind_s, val_s in cmp_s._comp.items():
|
|
550
|
+
for ind_o, val_o in cmp_o._comp.items():
|
|
551
|
+
ind_r = ind_s + ind_o
|
|
552
|
+
if len(ind_r) == len(set(ind_r)): # all indices are different
|
|
553
|
+
cmp_r[[ind_r]] += val_s * val_o
|
|
554
|
+
result = fmodule.alternating_contravariant_tensor(rank_r)
|
|
555
|
+
result._components[basis] = cmp_r
|
|
556
|
+
if self._name is not None and other._name is not None:
|
|
557
|
+
sname = self._name
|
|
558
|
+
oname = other._name
|
|
559
|
+
if not is_atomic(sname):
|
|
560
|
+
sname = '(' + sname + ')'
|
|
561
|
+
if not is_atomic(oname):
|
|
562
|
+
oname = '(' + oname + ')'
|
|
563
|
+
result._name = sname + unicode_wedge + oname
|
|
564
|
+
if self._latex_name is not None and other._latex_name is not None:
|
|
565
|
+
slname = self._latex_name
|
|
566
|
+
olname = other._latex_name
|
|
567
|
+
if not is_atomic(slname):
|
|
568
|
+
slname = r'\left(' + slname + r'\right)'
|
|
569
|
+
if not is_atomic(olname):
|
|
570
|
+
olname = r'\left(' + olname + r'\right)'
|
|
571
|
+
result._latex_name = slname + r'\wedge ' + olname
|
|
572
|
+
return result
|
|
573
|
+
|
|
574
|
+
def interior_product(self, form):
|
|
575
|
+
r"""
|
|
576
|
+
Interior product with an alternating form.
|
|
577
|
+
|
|
578
|
+
If ``self`` is an alternating contravariant tensor `A` of degree `p`
|
|
579
|
+
and `B` is an alternating form of degree `q\geq p` on the same free
|
|
580
|
+
module, the interior product of `A` by `B` is the alternating form
|
|
581
|
+
`\iota_A B` of degree `q-p` defined by
|
|
582
|
+
|
|
583
|
+
.. MATH::
|
|
584
|
+
|
|
585
|
+
(\iota_A B)_{i_1\ldots i_{q-p}} = A^{k_1\ldots k_p}
|
|
586
|
+
B_{k_1\ldots k_p i_1\ldots i_{q-p}}
|
|
587
|
+
|
|
588
|
+
.. NOTE::
|
|
589
|
+
|
|
590
|
+
``A.interior_product(B)`` yields the same result as
|
|
591
|
+
``A.contract(0,..., p-1, B, 0,..., p-1)`` (cf.
|
|
592
|
+
:meth:`~sage.tensor.modules.free_module_tensor.FreeModuleTensor.contract`),
|
|
593
|
+
but ``interior_product`` is more efficient, the alternating
|
|
594
|
+
character of `A` being not used to reduce the computation in
|
|
595
|
+
:meth:`~sage.tensor.modules.free_module_tensor.FreeModuleTensor.contract`
|
|
596
|
+
|
|
597
|
+
INPUT:
|
|
598
|
+
|
|
599
|
+
- ``form`` -- alternating form `B` (instance of
|
|
600
|
+
:class:`~sage.tensor.modules.free_module_alt_form.FreeModuleAltForm`);
|
|
601
|
+
the degree of `B` must be at least equal to the degree of ``self``
|
|
602
|
+
|
|
603
|
+
OUTPUT:
|
|
604
|
+
|
|
605
|
+
- element of the base ring (case `p=q`) or
|
|
606
|
+
:class:`~sage.tensor.modules.free_module_alt_form.FreeModuleAltForm`
|
|
607
|
+
(case `p<q`) representing the interior product `\iota_A B`, where `A`
|
|
608
|
+
is ``self``
|
|
609
|
+
|
|
610
|
+
.. SEEALSO::
|
|
611
|
+
|
|
612
|
+
:meth:`~sage.tensor.modules.free_module_alt_form.FreeModuleAltForm.interior_product`
|
|
613
|
+
for the interior product of an alternating form by an alternating
|
|
614
|
+
contravariant tensor
|
|
615
|
+
|
|
616
|
+
EXAMPLES:
|
|
617
|
+
|
|
618
|
+
Let us consider a rank-4 free module::
|
|
619
|
+
|
|
620
|
+
sage: M = FiniteRankFreeModule(ZZ, 4, name='M', start_index=1)
|
|
621
|
+
sage: e = M.basis('e')
|
|
622
|
+
|
|
623
|
+
and various interior products on it, starting with a module element
|
|
624
|
+
(``p=1``) and a linear form (``q=1``)::
|
|
625
|
+
|
|
626
|
+
sage: a = M([-2,1,2,3], basis=e, name='A')
|
|
627
|
+
sage: b = M.linear_form(name='B')
|
|
628
|
+
sage: b[:] = [2, 0, -3, 4]
|
|
629
|
+
sage: c = a.interior_product(b); c
|
|
630
|
+
2
|
|
631
|
+
sage: c == a.contract(b)
|
|
632
|
+
True
|
|
633
|
+
|
|
634
|
+
Case ``p=1`` and ``q=3``::
|
|
635
|
+
|
|
636
|
+
sage: b = M.alternating_form(3, name='B')
|
|
637
|
+
sage: b[1,2,3], b[1,2,4], b[1,3,4], b[2,3,4] = 3, -1, 2, 5
|
|
638
|
+
sage: c = a.interior_product(b); c
|
|
639
|
+
Alternating form i_A B of degree 2 on the Rank-4 free module M over the Integer Ring
|
|
640
|
+
sage: c.display()
|
|
641
|
+
i_A B = 3 e^1∧e^2 + 3 e^1∧e^3 - 3 e^1∧e^4 + 9 e^2∧e^3 - 8 e^2∧e^4 + e^3∧e^4
|
|
642
|
+
sage: latex(c)
|
|
643
|
+
\iota_{A} B
|
|
644
|
+
sage: c == a.contract(b)
|
|
645
|
+
True
|
|
646
|
+
|
|
647
|
+
Case ``p=2`` and ``q=3``::
|
|
648
|
+
|
|
649
|
+
sage: a = M.alternating_contravariant_tensor(2, name='A')
|
|
650
|
+
sage: a[1,2], a[1,3], a[1,4] = 2, -5, 3
|
|
651
|
+
sage: a[2,3], a[2,4], a[3,4] = -1, 4, 2
|
|
652
|
+
sage: c = a.interior_product(b); c
|
|
653
|
+
Linear form i_A B on the Rank-4 free module M over the Integer Ring
|
|
654
|
+
sage: c.display()
|
|
655
|
+
i_A B = -6 e^1 + 56 e^2 - 40 e^3 - 34 e^4
|
|
656
|
+
sage: c == a.contract(0, 1, b, 0, 1) # contraction on all indices of a
|
|
657
|
+
True
|
|
658
|
+
|
|
659
|
+
Case ``p=2`` and ``q=4``::
|
|
660
|
+
|
|
661
|
+
sage: b = M.alternating_form(4, name='B')
|
|
662
|
+
sage: b[1,2,3,4] = 5
|
|
663
|
+
sage: c = a.interior_product(b); c
|
|
664
|
+
Alternating form i_A B of degree 2 on the Rank-4 free module M over the Integer Ring
|
|
665
|
+
sage: c.display()
|
|
666
|
+
i_A B = 20 e^1∧e^2 - 40 e^1∧e^3 - 10 e^1∧e^4 + 30 e^2∧e^3 + 50 e^2∧e^4 + 20 e^3∧e^4
|
|
667
|
+
sage: c == a.contract(0, 1, b, 0, 1)
|
|
668
|
+
True
|
|
669
|
+
|
|
670
|
+
Case ``p=2`` and ``q=2``::
|
|
671
|
+
|
|
672
|
+
sage: b = M.alternating_form(2)
|
|
673
|
+
sage: b[1,2], b[1,3], b[1,4] = 6, 0, -2
|
|
674
|
+
sage: b[2,3], b[2,4], b[3,4] = 2, 3, 4
|
|
675
|
+
sage: c = a.interior_product(b); c
|
|
676
|
+
48
|
|
677
|
+
sage: c == a.contract(0, 1, b, 0, 1)
|
|
678
|
+
True
|
|
679
|
+
|
|
680
|
+
Case ``p=3`` and ``q=3``::
|
|
681
|
+
|
|
682
|
+
sage: a = M.alternating_contravariant_tensor(3, name='A')
|
|
683
|
+
sage: a[1,2,3], a[1,2,4], a[1,3,4], a[2,3,4] = -3, 2, 8, -5
|
|
684
|
+
sage: b = M.alternating_form(3, name='B')
|
|
685
|
+
sage: b[1,2,3], b[1,2,4], b[1,3,4], b[2,3,4] = 3, -1, 2, 5
|
|
686
|
+
sage: c = a.interior_product(b); c
|
|
687
|
+
-120
|
|
688
|
+
sage: c == a.contract(0, 1, 2, b, 0, 1, 2)
|
|
689
|
+
True
|
|
690
|
+
|
|
691
|
+
Case ``p=3`` and ``q=4``::
|
|
692
|
+
|
|
693
|
+
sage: b = M.alternating_form(4, name='B')
|
|
694
|
+
sage: b[1,2,3,4] = 5
|
|
695
|
+
sage: c = a.interior_product(b); c
|
|
696
|
+
Linear form i_A B on the Rank-4 free module M over the Integer Ring
|
|
697
|
+
sage: c.display()
|
|
698
|
+
i_A B = 150 e^1 + 240 e^2 - 60 e^3 - 90 e^4
|
|
699
|
+
sage: c == a.contract(0, 1, 2, b, 0, 1, 2)
|
|
700
|
+
True
|
|
701
|
+
|
|
702
|
+
Case ``p=4`` and ``q=4``::
|
|
703
|
+
|
|
704
|
+
sage: a = M.alternating_contravariant_tensor(4, name='A')
|
|
705
|
+
sage: a[1,2,3,4] = -2
|
|
706
|
+
sage: c = a.interior_product(b); c
|
|
707
|
+
-240
|
|
708
|
+
sage: c == a.contract(0, 1, 2, 3, b, 0, 1, 2, 3)
|
|
709
|
+
True
|
|
710
|
+
"""
|
|
711
|
+
from .format_utilities import is_atomic
|
|
712
|
+
from .free_module_alt_form import FreeModuleAltForm
|
|
713
|
+
if not isinstance(form, FreeModuleAltForm):
|
|
714
|
+
raise TypeError("{} is not an alternating form".format(form))
|
|
715
|
+
p_res = form._tensor_rank - self._tensor_rank # degree of the result
|
|
716
|
+
if self._tensor_rank == 1:
|
|
717
|
+
# Case p = 1:
|
|
718
|
+
res = self.contract(form) # contract() deals efficiently with
|
|
719
|
+
# the antisymmetry for p = 1
|
|
720
|
+
else:
|
|
721
|
+
# Case p > 1:
|
|
722
|
+
if form._fmodule != self._fmodule:
|
|
723
|
+
raise ValueError("{} is not defined on the same ".format(form) +
|
|
724
|
+
"module as the {}".format(self))
|
|
725
|
+
if form._tensor_rank < self._tensor_rank:
|
|
726
|
+
raise ValueError("the degree of the {} is lower ".format(form) +
|
|
727
|
+
"than that of the {}".format(self))
|
|
728
|
+
# Interior product at the component level:
|
|
729
|
+
basis = self.common_basis(form)
|
|
730
|
+
if basis is None:
|
|
731
|
+
raise ValueError("no common basis for the interior product")
|
|
732
|
+
comp = self._components[basis].interior_product(
|
|
733
|
+
form._components[basis])
|
|
734
|
+
if p_res == 0:
|
|
735
|
+
res = comp # result is a scalar
|
|
736
|
+
else:
|
|
737
|
+
res = self._fmodule.tensor_from_comp((0, p_res), comp)
|
|
738
|
+
# Name of the result
|
|
739
|
+
res_name = None
|
|
740
|
+
if self._name is not None and form._name is not None:
|
|
741
|
+
sname = self._name
|
|
742
|
+
oname = form._name
|
|
743
|
+
if not is_atomic(sname):
|
|
744
|
+
sname = '(' + sname + ')'
|
|
745
|
+
if not is_atomic(oname):
|
|
746
|
+
oname = '(' + oname + ')'
|
|
747
|
+
res_name = 'i_' + sname + ' ' + oname
|
|
748
|
+
res_latex_name = None
|
|
749
|
+
if self._latex_name is not None and form._latex_name is not None:
|
|
750
|
+
slname = self._latex_name
|
|
751
|
+
olname = form._latex_name
|
|
752
|
+
if not is_atomic(olname):
|
|
753
|
+
olname = r'\left(' + olname + r'\right)'
|
|
754
|
+
res_latex_name = r'\iota_{' + slname + '} ' + olname
|
|
755
|
+
if res_name:
|
|
756
|
+
try: # there is no guarantee that the result has set_name
|
|
757
|
+
# and is mutable
|
|
758
|
+
res.set_name(res_name, latex_name=res_latex_name)
|
|
759
|
+
except (AttributeError, TypeError, ValueError):
|
|
760
|
+
pass
|
|
761
|
+
return res
|