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,652 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
r"""
|
|
3
|
+
Sets of morphisms between free modules
|
|
4
|
+
|
|
5
|
+
The class :class:`FreeModuleHomset` implements sets of homomorphisms between
|
|
6
|
+
two free modules of finite rank over the same commutative ring.
|
|
7
|
+
|
|
8
|
+
The subclass :class:`FreeModuleEndset` implements the special case of
|
|
9
|
+
sets of endomorphisms.
|
|
10
|
+
|
|
11
|
+
AUTHORS:
|
|
12
|
+
|
|
13
|
+
- Eric Gourgoulhon, Michal Bejger (2014-2015): initial version
|
|
14
|
+
- Matthias Koeppe (2024): add :class:`FreeModuleEndset`
|
|
15
|
+
|
|
16
|
+
REFERENCES:
|
|
17
|
+
|
|
18
|
+
- Chaps. 13, 14 of R. Godement : *Algebra* [God1968]_
|
|
19
|
+
- Chap. 3 of S. Lang : *Algebra* [Lan2002]_
|
|
20
|
+
"""
|
|
21
|
+
#******************************************************************************
|
|
22
|
+
# Copyright (C) 2015 Eric Gourgoulhon <eric.gourgoulhon@obspm.fr>
|
|
23
|
+
# Copyright (C) 2015 Michal Bejger <bejger@camk.edu.pl>
|
|
24
|
+
#
|
|
25
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
26
|
+
# as published by the Free Software Foundation; either version 2 of
|
|
27
|
+
# the License, or (at your option) any later version.
|
|
28
|
+
# http://www.gnu.org/licenses/
|
|
29
|
+
#******************************************************************************
|
|
30
|
+
|
|
31
|
+
from sage.categories.homset import Homset
|
|
32
|
+
from sage.misc.classcall_metaclass import ClasscallMetaclass
|
|
33
|
+
from sage.tensor.modules.free_module_morphism import FiniteRankFreeModuleEndomorphism, FiniteRankFreeModuleMorphism
|
|
34
|
+
from sage.tensor.modules.free_module_automorphism import FreeModuleAutomorphism
|
|
35
|
+
from sage.tensor.modules.free_module_tensor import FreeModuleTensor
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class FreeModuleHomset(Homset, metaclass=ClasscallMetaclass):
|
|
39
|
+
r"""
|
|
40
|
+
Set of homomorphisms between free modules of finite rank over a
|
|
41
|
+
commutative ring.
|
|
42
|
+
|
|
43
|
+
Given two free modules `M` and `N` of respective ranks `m` and `n` over a
|
|
44
|
+
commutative ring `R`, the class :class:`FreeModuleHomset` implements the
|
|
45
|
+
set `\mathrm{Hom}(M,N)` of homomorphisms `M\rightarrow N`.
|
|
46
|
+
The set `\mathrm{Hom}(M,N)` is actually a free module of rank `mn` over
|
|
47
|
+
`R`, but this aspect is not taken into account here.
|
|
48
|
+
|
|
49
|
+
This is a Sage *parent* class, whose *element* class is
|
|
50
|
+
:class:`~sage.tensor.modules.free_module_morphism.FiniteRankFreeModuleMorphism`.
|
|
51
|
+
|
|
52
|
+
The case `M=N` (endomorphisms) is delegated to the subclass :class:`FreeModuleEndset`.
|
|
53
|
+
|
|
54
|
+
INPUT:
|
|
55
|
+
|
|
56
|
+
- ``fmodule1`` -- free module `M` (domain of the homomorphisms), as an
|
|
57
|
+
instance of
|
|
58
|
+
:class:`~sage.tensor.modules.finite_rank_free_module.FiniteRankFreeModule`
|
|
59
|
+
- ``fmodule2`` -- free module `N` (codomain of the homomorphisms), as an
|
|
60
|
+
instance of
|
|
61
|
+
:class:`~sage.tensor.modules.finite_rank_free_module.FiniteRankFreeModule`
|
|
62
|
+
- ``name`` -- (default: ``None``) string; name given to the hom-set; if
|
|
63
|
+
none is provided, Hom(M,N) will be used
|
|
64
|
+
- ``latex_name`` -- (default: ``None``) string; LaTeX symbol to denote the
|
|
65
|
+
hom-set; if none is provided, `\mathrm{Hom}(M,N)` will be used
|
|
66
|
+
|
|
67
|
+
EXAMPLES:
|
|
68
|
+
|
|
69
|
+
Set of homomorphisms between two free modules over `\ZZ`::
|
|
70
|
+
|
|
71
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
72
|
+
sage: N = FiniteRankFreeModule(ZZ, 2, name='N')
|
|
73
|
+
sage: H = Hom(M,N) ; H
|
|
74
|
+
Set of Morphisms from Rank-3 free module M over the Integer Ring
|
|
75
|
+
to Rank-2 free module N over the Integer Ring
|
|
76
|
+
in Category of finite dimensional modules over Integer Ring
|
|
77
|
+
sage: type(H)
|
|
78
|
+
<class 'sage.tensor.modules.free_module_homset.FreeModuleHomset_with_category_with_equality_by_id'>
|
|
79
|
+
sage: H.category()
|
|
80
|
+
Category of homsets of modules over Integer Ring
|
|
81
|
+
|
|
82
|
+
Hom-sets are cached::
|
|
83
|
+
|
|
84
|
+
sage: H is Hom(M,N)
|
|
85
|
+
True
|
|
86
|
+
|
|
87
|
+
The LaTeX formatting is::
|
|
88
|
+
|
|
89
|
+
sage: latex(H)
|
|
90
|
+
\mathrm{Hom}\left(M,N\right)
|
|
91
|
+
|
|
92
|
+
As usual, the construction of an element is performed by the ``__call__``
|
|
93
|
+
method; the argument can be the matrix representing the morphism in the
|
|
94
|
+
default bases of the two modules::
|
|
95
|
+
|
|
96
|
+
sage: e = M.basis('e')
|
|
97
|
+
sage: f = N.basis('f')
|
|
98
|
+
sage: phi = H([[-1,2,0], [5,1,2]]) ; phi
|
|
99
|
+
Generic morphism:
|
|
100
|
+
From: Rank-3 free module M over the Integer Ring
|
|
101
|
+
To: Rank-2 free module N over the Integer Ring
|
|
102
|
+
sage: phi.parent() is H
|
|
103
|
+
True
|
|
104
|
+
|
|
105
|
+
An example of construction from a matrix w.r.t. bases that are not the
|
|
106
|
+
default ones::
|
|
107
|
+
|
|
108
|
+
sage: ep = M.basis('ep', latex_symbol=r"e'")
|
|
109
|
+
sage: fp = N.basis('fp', latex_symbol=r"f'")
|
|
110
|
+
sage: phi2 = H([[3,2,1], [1,2,3]], bases=(ep,fp)) ; phi2
|
|
111
|
+
Generic morphism:
|
|
112
|
+
From: Rank-3 free module M over the Integer Ring
|
|
113
|
+
To: Rank-2 free module N over the Integer Ring
|
|
114
|
+
|
|
115
|
+
The zero element::
|
|
116
|
+
|
|
117
|
+
sage: z = H.zero() ; z
|
|
118
|
+
Generic morphism:
|
|
119
|
+
From: Rank-3 free module M over the Integer Ring
|
|
120
|
+
To: Rank-2 free module N over the Integer Ring
|
|
121
|
+
sage: z.matrix(e,f)
|
|
122
|
+
[0 0 0]
|
|
123
|
+
[0 0 0]
|
|
124
|
+
|
|
125
|
+
The test suite for H is passed::
|
|
126
|
+
|
|
127
|
+
sage: TestSuite(H).run()
|
|
128
|
+
"""
|
|
129
|
+
|
|
130
|
+
Element = FiniteRankFreeModuleMorphism
|
|
131
|
+
|
|
132
|
+
@staticmethod
|
|
133
|
+
def __classcall_private__(cls, fmodule1, fmodule2, name=None, latex_name=None):
|
|
134
|
+
r"""
|
|
135
|
+
Delegate to the subclass :class:`FreeModuleEndset` if ``fmodule1 == fmodule2``.
|
|
136
|
+
|
|
137
|
+
TESTS::
|
|
138
|
+
|
|
139
|
+
sage: from sage.tensor.modules.free_module_homset import FreeModuleEndset, FreeModuleHomset
|
|
140
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
141
|
+
sage: N = FiniteRankFreeModule(ZZ, 2, name='N')
|
|
142
|
+
sage: isinstance(FreeModuleHomset(M, N), FreeModuleEndset)
|
|
143
|
+
False
|
|
144
|
+
sage: isinstance(FreeModuleHomset(M, M), FreeModuleEndset)
|
|
145
|
+
True
|
|
146
|
+
"""
|
|
147
|
+
from .finite_rank_free_module import FiniteRankFreeModule
|
|
148
|
+
if not isinstance(fmodule1, FiniteRankFreeModule):
|
|
149
|
+
raise TypeError("fmodule1 = {} is not an ".format(fmodule1) +
|
|
150
|
+
"instance of FiniteRankFreeModule")
|
|
151
|
+
if not isinstance(fmodule2, FiniteRankFreeModule):
|
|
152
|
+
raise TypeError("fmodule2 = {} is not an ".format(fmodule2) +
|
|
153
|
+
"instance of FiniteRankFreeModule")
|
|
154
|
+
if fmodule1.base_ring() != fmodule2.base_ring():
|
|
155
|
+
raise TypeError("the domain and codomain are not defined over " +
|
|
156
|
+
"the same ring")
|
|
157
|
+
if name is None:
|
|
158
|
+
name = "Hom(" + fmodule1._name + "," + fmodule2._name + ")"
|
|
159
|
+
if latex_name is None:
|
|
160
|
+
latex_name = \
|
|
161
|
+
r"\mathrm{Hom}\left(" + fmodule1._latex_name + "," + \
|
|
162
|
+
fmodule2._latex_name + r"\right)"
|
|
163
|
+
if fmodule1 == fmodule2:
|
|
164
|
+
return FreeModuleEndset(fmodule1, name, latex_name)
|
|
165
|
+
return type.__call__(cls, fmodule1, fmodule2, name, latex_name)
|
|
166
|
+
|
|
167
|
+
def __init__(self, fmodule1, fmodule2, name, latex_name):
|
|
168
|
+
r"""
|
|
169
|
+
TESTS::
|
|
170
|
+
|
|
171
|
+
sage: from sage.tensor.modules.free_module_homset import FreeModuleHomset
|
|
172
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
173
|
+
sage: N = FiniteRankFreeModule(ZZ, 2, name='N')
|
|
174
|
+
sage: FreeModuleHomset(M, N)
|
|
175
|
+
Set of Morphisms from Rank-3 free module M over the Integer Ring
|
|
176
|
+
to Rank-2 free module N over the Integer Ring
|
|
177
|
+
in Category of finite dimensional modules over Integer Ring
|
|
178
|
+
|
|
179
|
+
sage: H = FreeModuleHomset(M, N, name='L(M,N)',
|
|
180
|
+
....: latex_name=r'\mathcal{L}(M,N)')
|
|
181
|
+
sage: latex(H)
|
|
182
|
+
\mathcal{L}(M,N)
|
|
183
|
+
"""
|
|
184
|
+
Homset.__init__(self, fmodule1, fmodule2)
|
|
185
|
+
self._name = name
|
|
186
|
+
self._latex_name = latex_name
|
|
187
|
+
|
|
188
|
+
def _latex_(self):
|
|
189
|
+
r"""
|
|
190
|
+
LaTeX representation of the object.
|
|
191
|
+
|
|
192
|
+
EXAMPLES::
|
|
193
|
+
|
|
194
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
195
|
+
sage: N = FiniteRankFreeModule(ZZ, 2, name='N')
|
|
196
|
+
sage: H = Hom(M,N)
|
|
197
|
+
sage: H._latex_()
|
|
198
|
+
'\\mathrm{Hom}\\left(M,N\\right)'
|
|
199
|
+
sage: latex(H) # indirect doctest
|
|
200
|
+
\mathrm{Hom}\left(M,N\right)
|
|
201
|
+
"""
|
|
202
|
+
if self._latex_name is None:
|
|
203
|
+
return r'\mbox{' + str(self) + r'}'
|
|
204
|
+
else:
|
|
205
|
+
return self._latex_name
|
|
206
|
+
|
|
207
|
+
def __call__(self, *args, **kwds):
|
|
208
|
+
r"""
|
|
209
|
+
To bypass Homset.__call__, enforcing Parent.__call__ instead.
|
|
210
|
+
|
|
211
|
+
EXAMPLES::
|
|
212
|
+
|
|
213
|
+
sage: M = FiniteRankFreeModule(ZZ, 2, name='M')
|
|
214
|
+
sage: N = FiniteRankFreeModule(ZZ, 3, name='N')
|
|
215
|
+
sage: H = Hom(M,N)
|
|
216
|
+
sage: e = M.basis('e') ; f = N.basis('f')
|
|
217
|
+
sage: a = H.__call__(0) ; a
|
|
218
|
+
Generic morphism:
|
|
219
|
+
From: Rank-2 free module M over the Integer Ring
|
|
220
|
+
To: Rank-3 free module N over the Integer Ring
|
|
221
|
+
sage: a.matrix(e,f)
|
|
222
|
+
[0 0]
|
|
223
|
+
[0 0]
|
|
224
|
+
[0 0]
|
|
225
|
+
sage: a == H.zero()
|
|
226
|
+
True
|
|
227
|
+
sage: a == H(0)
|
|
228
|
+
True
|
|
229
|
+
sage: a = H.__call__([[1,2],[3,4],[5,6]], bases=(e,f), name='a') ; a
|
|
230
|
+
Generic morphism:
|
|
231
|
+
From: Rank-2 free module M over the Integer Ring
|
|
232
|
+
To: Rank-3 free module N over the Integer Ring
|
|
233
|
+
sage: a.matrix(e,f)
|
|
234
|
+
[1 2]
|
|
235
|
+
[3 4]
|
|
236
|
+
[5 6]
|
|
237
|
+
sage: a == H([[1,2],[3,4],[5,6]], bases=(e,f))
|
|
238
|
+
True
|
|
239
|
+
"""
|
|
240
|
+
from sage.structure.parent import Parent
|
|
241
|
+
return Parent.__call__(self, *args, **kwds)
|
|
242
|
+
|
|
243
|
+
#### Methods required for any Parent
|
|
244
|
+
|
|
245
|
+
def _element_constructor_(self, matrix_rep, bases=None, name=None,
|
|
246
|
+
latex_name=None, is_identity=False):
|
|
247
|
+
r"""
|
|
248
|
+
Construct an element of ``self``, i.e. a homomorphism M --> N, where
|
|
249
|
+
M is the domain of ``self`` and N its codomain.
|
|
250
|
+
|
|
251
|
+
INPUT:
|
|
252
|
+
|
|
253
|
+
- ``matrix_rep`` -- matrix representation of the homomorphism with
|
|
254
|
+
respect to the bases ``basis1`` and ``basis2``; this entry can
|
|
255
|
+
actually be any material from which a matrix of size rank(N)*rank(M)
|
|
256
|
+
can be constructed
|
|
257
|
+
- ``bases`` -- (default: ``None``) pair (basis_M, basis_N) defining the
|
|
258
|
+
matrix representation, basis_M being a basis of module `M` and
|
|
259
|
+
basis_N a basis of module `N` ; if none is provided the pair formed
|
|
260
|
+
by the default bases of each module is assumed.
|
|
261
|
+
- ``name`` -- (default: ``None``) string; name given to the
|
|
262
|
+
homomorphism
|
|
263
|
+
- ``latex_name`` -- (default: ``None``) string; LaTeX symbol to denote
|
|
264
|
+
the homomorphism. If none is provided, ``name`` will be used.
|
|
265
|
+
- ``is_identity`` -- boolean (default: ``False``); determines whether the
|
|
266
|
+
constructed object is the identity endomorphism. If set to ``True``,
|
|
267
|
+
then N must be M and the entry ``matrix_rep`` is not used.
|
|
268
|
+
|
|
269
|
+
EXAMPLES:
|
|
270
|
+
|
|
271
|
+
Construction of a homomorphism between two free `\ZZ`-modules::
|
|
272
|
+
|
|
273
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
274
|
+
sage: N = FiniteRankFreeModule(ZZ, 2, name='N')
|
|
275
|
+
sage: e = M.basis('e') ; f = N.basis('f')
|
|
276
|
+
sage: H = Hom(M,N)
|
|
277
|
+
sage: phi = H._element_constructor_([[2,-1,3], [1,0,-4]], bases=(e,f),
|
|
278
|
+
....: name='phi', latex_name=r'\phi')
|
|
279
|
+
sage: phi
|
|
280
|
+
Generic morphism:
|
|
281
|
+
From: Rank-3 free module M over the Integer Ring
|
|
282
|
+
To: Rank-2 free module N over the Integer Ring
|
|
283
|
+
sage: phi.matrix(e,f)
|
|
284
|
+
[ 2 -1 3]
|
|
285
|
+
[ 1 0 -4]
|
|
286
|
+
sage: phi == H([[2,-1,3], [1,0,-4]], bases=(e,f), name='phi',
|
|
287
|
+
....: latex_name=r'\phi')
|
|
288
|
+
True
|
|
289
|
+
|
|
290
|
+
Construction of an endomorphism::
|
|
291
|
+
|
|
292
|
+
sage: EM = End(M)
|
|
293
|
+
sage: phi = EM._element_constructor_([[1,2,3],[4,5,6],[7,8,9]],
|
|
294
|
+
....: name='phi', latex_name=r'\phi')
|
|
295
|
+
sage: phi
|
|
296
|
+
Generic endomorphism of Rank-3 free module M over the Integer Ring
|
|
297
|
+
sage: phi.matrix(e,e)
|
|
298
|
+
[1 2 3]
|
|
299
|
+
[4 5 6]
|
|
300
|
+
[7 8 9]
|
|
301
|
+
|
|
302
|
+
Coercion of a type-`(1,1)` tensor to an endomorphism::
|
|
303
|
+
|
|
304
|
+
sage: a = M.tensor((1,1))
|
|
305
|
+
sage: a[:] = [[1,2,3],[4,5,6],[7,8,9]]
|
|
306
|
+
sage: EM = End(M)
|
|
307
|
+
sage: phi_a = EM._element_constructor_(a) ; phi_a
|
|
308
|
+
Generic endomorphism of Rank-3 free module M over the Integer Ring
|
|
309
|
+
sage: phi_a.matrix(e,e)
|
|
310
|
+
[1 2 3]
|
|
311
|
+
[4 5 6]
|
|
312
|
+
[7 8 9]
|
|
313
|
+
sage: phi_a == phi
|
|
314
|
+
True
|
|
315
|
+
sage: phi_a1 = EM(a) ; phi_a1 # indirect doctest
|
|
316
|
+
Generic endomorphism of Rank-3 free module M over the Integer Ring
|
|
317
|
+
sage: phi_a1 == phi
|
|
318
|
+
True
|
|
319
|
+
"""
|
|
320
|
+
# Standard construction:
|
|
321
|
+
return self.element_class(self, matrix_rep, bases=bases, name=name,
|
|
322
|
+
latex_name=latex_name,
|
|
323
|
+
is_identity=is_identity)
|
|
324
|
+
|
|
325
|
+
def _an_element_(self):
|
|
326
|
+
r"""
|
|
327
|
+
Construct some (unnamed) element.
|
|
328
|
+
|
|
329
|
+
EXAMPLES::
|
|
330
|
+
|
|
331
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
332
|
+
sage: N = FiniteRankFreeModule(ZZ, 2, name='N')
|
|
333
|
+
sage: e = M.basis('e') ; f = N.basis('f')
|
|
334
|
+
sage: phi = Hom(M,N)._an_element_() ; phi
|
|
335
|
+
Generic morphism:
|
|
336
|
+
From: Rank-3 free module M over the Integer Ring
|
|
337
|
+
To: Rank-2 free module N over the Integer Ring
|
|
338
|
+
sage: phi.matrix(e,f)
|
|
339
|
+
[1 1 1]
|
|
340
|
+
[1 1 1]
|
|
341
|
+
sage: phi == Hom(M,N).an_element()
|
|
342
|
+
True
|
|
343
|
+
"""
|
|
344
|
+
ring = self.base_ring()
|
|
345
|
+
m = self.domain().rank()
|
|
346
|
+
n = self.codomain().rank()
|
|
347
|
+
matrix_rep = [[ring.an_element() for i in range(m)] for j in range(n)]
|
|
348
|
+
return self.element_class(self, matrix_rep)
|
|
349
|
+
|
|
350
|
+
#### End of methods required for any Parent
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
class FreeModuleEndset(FreeModuleHomset):
|
|
354
|
+
r"""
|
|
355
|
+
Ring of endomorphisms of a free module of finite rank over a commutative ring.
|
|
356
|
+
|
|
357
|
+
Given a free modules `M` of rank `n` over a commutative ring `R`, the
|
|
358
|
+
class :class:`FreeModuleEndset` implements the ring `\mathrm{Hom}(M,M)`
|
|
359
|
+
of endomorphisms `M\rightarrow M`.
|
|
360
|
+
|
|
361
|
+
This is a Sage *parent* class, whose *element* class is
|
|
362
|
+
:class:`~sage.tensor.modules.free_module_morphism.FiniteRankFreeModuleMorphism`.
|
|
363
|
+
|
|
364
|
+
INPUT:
|
|
365
|
+
|
|
366
|
+
- ``fmodule`` -- free module `M` (domain and codomain of the endomorphisms), as an
|
|
367
|
+
instance of
|
|
368
|
+
:class:`~sage.tensor.modules.finite_rank_free_module.FiniteRankFreeModule`
|
|
369
|
+
- ``name`` -- (default: ``None``) string; name given to the end-set; if
|
|
370
|
+
none is provided, Hom(M,M) will be used
|
|
371
|
+
- ``latex_name`` -- (default: ``None``) string; LaTeX symbol to denote the
|
|
372
|
+
hom-set; if none is provided, `\mathrm{Hom}(M,M)` will be used
|
|
373
|
+
|
|
374
|
+
EXAMPLES:
|
|
375
|
+
|
|
376
|
+
The set of homomorphisms `M\rightarrow M`, i.e. endomorphisms, is
|
|
377
|
+
obtained by the function :func:`End`::
|
|
378
|
+
|
|
379
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
380
|
+
sage: e = M.basis('e')
|
|
381
|
+
sage: End(M)
|
|
382
|
+
Set of Morphisms from Rank-3 free module M over the Integer Ring
|
|
383
|
+
to Rank-3 free module M over the Integer Ring
|
|
384
|
+
in Category of finite dimensional modules over Integer Ring
|
|
385
|
+
|
|
386
|
+
``End(M)`` is actually identical to ``Hom(M,M)``::
|
|
387
|
+
|
|
388
|
+
sage: End(M) is Hom(M,M)
|
|
389
|
+
True
|
|
390
|
+
|
|
391
|
+
The unit of the endomorphism ring is the identity map::
|
|
392
|
+
|
|
393
|
+
sage: End(M).one()
|
|
394
|
+
Identity endomorphism of Rank-3 free module M over the Integer Ring
|
|
395
|
+
|
|
396
|
+
whose matrix in any basis is of course the identity matrix::
|
|
397
|
+
|
|
398
|
+
sage: End(M).one().matrix(e)
|
|
399
|
+
[1 0 0]
|
|
400
|
+
[0 1 0]
|
|
401
|
+
[0 0 1]
|
|
402
|
+
|
|
403
|
+
There is a canonical identification between endomorphisms of `M` and
|
|
404
|
+
tensors of type `(1,1)` on `M`. Accordingly, coercion maps have been
|
|
405
|
+
implemented between `\mathrm{End}(M)` and `T^{(1,1)}(M)` (the module of
|
|
406
|
+
all type-`(1,1)` tensors on `M`, see
|
|
407
|
+
:class:`~sage.tensor.modules.tensor_free_module.TensorFreeModule`)::
|
|
408
|
+
|
|
409
|
+
sage: T11 = M.tensor_module(1,1) ; T11
|
|
410
|
+
Free module of type-(1,1) tensors on the Rank-3 free module M over
|
|
411
|
+
the Integer Ring
|
|
412
|
+
sage: End(M).has_coerce_map_from(T11)
|
|
413
|
+
True
|
|
414
|
+
sage: T11.has_coerce_map_from(End(M))
|
|
415
|
+
True
|
|
416
|
+
|
|
417
|
+
See :class:`~sage.tensor.modules.tensor_free_module.TensorFreeModule` for
|
|
418
|
+
examples of the above coercions.
|
|
419
|
+
|
|
420
|
+
There is a coercion `\mathrm{GL}(M) \rightarrow \mathrm{End}(M)`, since
|
|
421
|
+
every automorphism is an endomorphism::
|
|
422
|
+
|
|
423
|
+
sage: GL = M.general_linear_group() ; GL
|
|
424
|
+
General linear group of the Rank-3 free module M over the Integer Ring
|
|
425
|
+
sage: End(M).has_coerce_map_from(GL)
|
|
426
|
+
True
|
|
427
|
+
|
|
428
|
+
Of course, there is no coercion in the reverse direction, since only
|
|
429
|
+
bijective endomorphisms are automorphisms::
|
|
430
|
+
|
|
431
|
+
sage: GL.has_coerce_map_from(End(M))
|
|
432
|
+
False
|
|
433
|
+
|
|
434
|
+
The coercion `\mathrm{GL}(M) \rightarrow \mathrm{End}(M)` in action::
|
|
435
|
+
|
|
436
|
+
sage: a = GL.an_element() ; a
|
|
437
|
+
Automorphism of the Rank-3 free module M over the Integer Ring
|
|
438
|
+
sage: a.matrix(e)
|
|
439
|
+
[ 1 0 0]
|
|
440
|
+
[ 0 -1 0]
|
|
441
|
+
[ 0 0 1]
|
|
442
|
+
sage: ea = End(M)(a) ; ea
|
|
443
|
+
Generic endomorphism of Rank-3 free module M over the Integer Ring
|
|
444
|
+
sage: ea.matrix(e)
|
|
445
|
+
[ 1 0 0]
|
|
446
|
+
[ 0 -1 0]
|
|
447
|
+
[ 0 0 1]
|
|
448
|
+
"""
|
|
449
|
+
|
|
450
|
+
Element = FiniteRankFreeModuleEndomorphism
|
|
451
|
+
|
|
452
|
+
def __init__(self, fmodule, name, latex_name):
|
|
453
|
+
r"""
|
|
454
|
+
TESTS::
|
|
455
|
+
|
|
456
|
+
sage: from sage.tensor.modules.free_module_homset import FreeModuleHomset
|
|
457
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
458
|
+
sage: N = FiniteRankFreeModule(ZZ, 2, name='N')
|
|
459
|
+
sage: FreeModuleHomset(M, N)
|
|
460
|
+
Set of Morphisms from Rank-3 free module M over the Integer Ring
|
|
461
|
+
to Rank-2 free module N over the Integer Ring
|
|
462
|
+
in Category of finite dimensional modules over Integer Ring
|
|
463
|
+
|
|
464
|
+
sage: H = FreeModuleHomset(M, N, name='L(M,N)',
|
|
465
|
+
....: latex_name=r'\mathcal{L}(M,N)')
|
|
466
|
+
sage: latex(H)
|
|
467
|
+
\mathcal{L}(M,N)
|
|
468
|
+
"""
|
|
469
|
+
FreeModuleHomset.__init__(self, fmodule, fmodule, name, latex_name)
|
|
470
|
+
self._one = None # to be set by self.one()
|
|
471
|
+
|
|
472
|
+
def _coerce_map_from_(self, other):
|
|
473
|
+
r"""
|
|
474
|
+
Determine whether coercion to ``self`` exists from other parent.
|
|
475
|
+
|
|
476
|
+
EXAMPLES:
|
|
477
|
+
|
|
478
|
+
The module of type-`(1,1)` tensors coerces to ``self``::
|
|
479
|
+
|
|
480
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
481
|
+
sage: e = M.basis('e')
|
|
482
|
+
sage: End(M)._coerce_map_from_(M.tensor_module(1,1))
|
|
483
|
+
True
|
|
484
|
+
sage: End(M).has_coerce_map_from(M.tensor_module(1,1))
|
|
485
|
+
True
|
|
486
|
+
sage: End(M)._coerce_map_from_(M.tensor_module(1,2))
|
|
487
|
+
False
|
|
488
|
+
|
|
489
|
+
The general linear group coerces to the endomorphism ring::
|
|
490
|
+
|
|
491
|
+
sage: End(M)._coerce_map_from_(M.general_linear_group())
|
|
492
|
+
True
|
|
493
|
+
"""
|
|
494
|
+
from sage.tensor.modules.tensor_free_module import TensorFreeModule
|
|
495
|
+
from sage.tensor.modules.free_module_linear_group import \
|
|
496
|
+
FreeModuleLinearGroup
|
|
497
|
+
if isinstance(other, TensorFreeModule):
|
|
498
|
+
# Coercion of a type-(1,1) tensor to an endomorphism:
|
|
499
|
+
if other.tensor_type() == (1,1):
|
|
500
|
+
return self.is_endomorphism_set() and \
|
|
501
|
+
other.base_module() is self.domain()
|
|
502
|
+
if isinstance(other, FreeModuleLinearGroup):
|
|
503
|
+
# Coercion of an automorphism to an endomorphism:
|
|
504
|
+
return self.is_endomorphism_set() and \
|
|
505
|
+
other.base_module() is self.domain()
|
|
506
|
+
return False
|
|
507
|
+
|
|
508
|
+
#### Methods required for any Parent
|
|
509
|
+
|
|
510
|
+
def _element_constructor_(self, matrix_rep, bases=None, name=None,
|
|
511
|
+
latex_name=None, is_identity=False):
|
|
512
|
+
r"""
|
|
513
|
+
Construct an element of ``self``, i.e. a homomorphism M --> N, where
|
|
514
|
+
M is the domain of ``self`` and N its codomain.
|
|
515
|
+
|
|
516
|
+
INPUT:
|
|
517
|
+
|
|
518
|
+
- ``matrix_rep`` -- matrix representation of the homomorphism with
|
|
519
|
+
respect to the bases ``basis1`` and ``basis2``; this entry can
|
|
520
|
+
actually be any material from which a matrix of size rank(N)*rank(M)
|
|
521
|
+
can be constructed
|
|
522
|
+
- ``bases`` -- (default: ``None``) pair (basis_M, basis_N) defining the
|
|
523
|
+
matrix representation, basis_M being a basis of module `M` and
|
|
524
|
+
basis_N a basis of module `N` ; if none is provided the pair formed
|
|
525
|
+
by the default bases of each module is assumed.
|
|
526
|
+
- ``name`` -- (default: ``None``) string; name given to the
|
|
527
|
+
homomorphism
|
|
528
|
+
- ``latex_name`` -- (default: ``None``) string; LaTeX symbol to denote
|
|
529
|
+
the homomorphism. If none is provided, ``name`` will be used.
|
|
530
|
+
- ``is_identity`` -- boolean (default: ``False``); determines whether the
|
|
531
|
+
constructed object is the identity endomorphism. If set to ``True``,
|
|
532
|
+
then N must be M and the entry ``matrix_rep`` is not used.
|
|
533
|
+
|
|
534
|
+
EXAMPLES:
|
|
535
|
+
|
|
536
|
+
Construction of an endomorphism::
|
|
537
|
+
|
|
538
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
539
|
+
sage: e = M.basis('e')
|
|
540
|
+
sage: EM = End(M)
|
|
541
|
+
sage: phi = EM._element_constructor_([[1,2,3],[4,5,6],[7,8,9]],
|
|
542
|
+
....: name='phi', latex_name=r'\phi')
|
|
543
|
+
sage: phi
|
|
544
|
+
Generic endomorphism of Rank-3 free module M over the Integer Ring
|
|
545
|
+
sage: phi.matrix(e,e)
|
|
546
|
+
[1 2 3]
|
|
547
|
+
[4 5 6]
|
|
548
|
+
[7 8 9]
|
|
549
|
+
|
|
550
|
+
Coercion of a type-`(1,1)` tensor to an endomorphism::
|
|
551
|
+
|
|
552
|
+
sage: a = M.tensor((1,1))
|
|
553
|
+
sage: a[:] = [[1,2,3],[4,5,6],[7,8,9]]
|
|
554
|
+
sage: EM = End(M)
|
|
555
|
+
sage: phi_a = EM._element_constructor_(a) ; phi_a
|
|
556
|
+
Generic endomorphism of Rank-3 free module M over the Integer Ring
|
|
557
|
+
sage: phi_a.matrix(e,e)
|
|
558
|
+
[1 2 3]
|
|
559
|
+
[4 5 6]
|
|
560
|
+
[7 8 9]
|
|
561
|
+
sage: phi_a == phi
|
|
562
|
+
True
|
|
563
|
+
sage: phi_a1 = EM(a) ; phi_a1 # indirect doctest
|
|
564
|
+
Generic endomorphism of Rank-3 free module M over the Integer Ring
|
|
565
|
+
sage: phi_a1 == phi
|
|
566
|
+
True
|
|
567
|
+
"""
|
|
568
|
+
if isinstance(matrix_rep, FreeModuleTensor):
|
|
569
|
+
# coercion of a type-(1,1) tensor to an endomorphism
|
|
570
|
+
# (this includes automorphisms, since the class
|
|
571
|
+
# FreeModuleAutomorphism inherits from FreeModuleTensor)
|
|
572
|
+
tensor = matrix_rep # for readability
|
|
573
|
+
if tensor.tensor_type() == (1,1) and tensor.base_module() is self.domain():
|
|
574
|
+
basis = tensor.pick_a_basis()
|
|
575
|
+
tcomp = tensor.comp(basis)
|
|
576
|
+
fmodule = tensor.base_module()
|
|
577
|
+
mat = [[tcomp[[i,j]] for j in fmodule.irange()]
|
|
578
|
+
for i in fmodule.irange()]
|
|
579
|
+
if isinstance(tensor, FreeModuleAutomorphism):
|
|
580
|
+
is_identity = tensor._is_identity
|
|
581
|
+
else:
|
|
582
|
+
is_identity = False
|
|
583
|
+
return self.element_class(self, mat, bases=(basis,basis),
|
|
584
|
+
name=tensor._name,
|
|
585
|
+
latex_name=tensor._latex_name,
|
|
586
|
+
is_identity=is_identity)
|
|
587
|
+
else:
|
|
588
|
+
raise TypeError("cannot coerce the {}".format(tensor) +
|
|
589
|
+
" to an element of {}".format(self))
|
|
590
|
+
return super()._element_constructor_(matrix_rep, bases=bases,
|
|
591
|
+
name=name, latex_name=latex_name,
|
|
592
|
+
is_identity=is_identity)
|
|
593
|
+
|
|
594
|
+
#### Monoid methods ####
|
|
595
|
+
|
|
596
|
+
def one(self):
|
|
597
|
+
r"""
|
|
598
|
+
Return the identity element of ``self`` considered as a monoid.
|
|
599
|
+
|
|
600
|
+
OUTPUT:
|
|
601
|
+
|
|
602
|
+
- the identity element of `\mathrm{End}(M) = \mathrm{Hom}(M,M)`, as an
|
|
603
|
+
instance of
|
|
604
|
+
:class:`~sage.tensor.modules.free_module_morphism.FiniteRankFreeModuleMorphism`
|
|
605
|
+
|
|
606
|
+
EXAMPLES:
|
|
607
|
+
|
|
608
|
+
Identity element of the set of endomorphisms of a free module
|
|
609
|
+
over `\ZZ`::
|
|
610
|
+
|
|
611
|
+
sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
|
|
612
|
+
sage: e = M.basis('e')
|
|
613
|
+
sage: H = End(M)
|
|
614
|
+
sage: H.one()
|
|
615
|
+
Identity endomorphism of Rank-3 free module M over the Integer Ring
|
|
616
|
+
sage: H.one().matrix(e)
|
|
617
|
+
[1 0 0]
|
|
618
|
+
[0 1 0]
|
|
619
|
+
[0 0 1]
|
|
620
|
+
sage: H.one().is_identity()
|
|
621
|
+
True
|
|
622
|
+
|
|
623
|
+
NB: mathematically, ``H.one()`` coincides with the identity map of the
|
|
624
|
+
free module `M`. However the latter is considered here as an
|
|
625
|
+
element of `\mathrm{GL}(M)`, the general linear group of `M`.
|
|
626
|
+
Accordingly, one has to use the coercion map
|
|
627
|
+
`\mathrm{GL}(M) \rightarrow \mathrm{End}(M)`
|
|
628
|
+
to recover ``H.one()`` from ``M.identity_map()``::
|
|
629
|
+
|
|
630
|
+
sage: M.identity_map()
|
|
631
|
+
Identity map of the Rank-3 free module M over the Integer Ring
|
|
632
|
+
sage: M.identity_map().parent()
|
|
633
|
+
General linear group of the Rank-3 free module M over the Integer Ring
|
|
634
|
+
sage: H.one().parent()
|
|
635
|
+
Set of Morphisms from Rank-3 free module M over the Integer Ring
|
|
636
|
+
to Rank-3 free module M over the Integer Ring
|
|
637
|
+
in Category of finite dimensional modules over Integer Ring
|
|
638
|
+
sage: H.one() == H(M.identity_map())
|
|
639
|
+
True
|
|
640
|
+
|
|
641
|
+
Conversely, one can recover ``M.identity_map()`` from ``H.one()`` by
|
|
642
|
+
means of a conversion `\mathrm{End}(M)\rightarrow \mathrm{GL}(M)`::
|
|
643
|
+
|
|
644
|
+
sage: GL = M.general_linear_group()
|
|
645
|
+
sage: M.identity_map() == GL(H.one())
|
|
646
|
+
True
|
|
647
|
+
"""
|
|
648
|
+
if self._one is None:
|
|
649
|
+
self._one = self.element_class(self, [], is_identity=True)
|
|
650
|
+
return self._one
|
|
651
|
+
|
|
652
|
+
#### End of monoid methods ####
|