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,661 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
# sage.doctest: needs sage.combinat sage.graphs
|
|
3
|
+
"""
|
|
4
|
+
Homomorphisms of Lie Algebras
|
|
5
|
+
|
|
6
|
+
AUTHORS:
|
|
7
|
+
|
|
8
|
+
- Travis Scrimshaw (07-15-2013): Initial implementation
|
|
9
|
+
- Eero Hakavuori (08-09-2018): Morphisms defined by a generating subset
|
|
10
|
+
"""
|
|
11
|
+
# ****************************************************************************
|
|
12
|
+
# Copyright (C) 2013 Travis Scrimshaw <tscrim at ucdavis.edu>
|
|
13
|
+
# 2018 Eero Hakavuori <eero.hakavuori at gmail.com>
|
|
14
|
+
#
|
|
15
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
16
|
+
# https://www.gnu.org/licenses/
|
|
17
|
+
# *****************************************************************************
|
|
18
|
+
|
|
19
|
+
from sage.misc.cachefunc import cached_method
|
|
20
|
+
from sage.categories.morphism import Morphism
|
|
21
|
+
from sage.categories.morphism import SetMorphism
|
|
22
|
+
from sage.categories.homset import Homset, Hom
|
|
23
|
+
from sage.structure.sequence import Sequence, Sequence_generic
|
|
24
|
+
from sage.structure.element import get_coercion_model
|
|
25
|
+
from sage.structure.richcmp import richcmp
|
|
26
|
+
from sage.matrix.constructor import matrix
|
|
27
|
+
from itertools import combinations
|
|
28
|
+
|
|
29
|
+
# TODO: Refactor out common functionality with RingHomomorphism_im_gens
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class LieAlgebraHomomorphism_im_gens(Morphism):
|
|
33
|
+
r"""
|
|
34
|
+
A homomorphism of Lie algebras.
|
|
35
|
+
|
|
36
|
+
Let `\mathfrak{g}` and `\mathfrak{g}^{\prime}` be Lie algebras.
|
|
37
|
+
A linear map `f \colon \mathfrak{g} \to \mathfrak{g}^{\prime}` is a
|
|
38
|
+
homomorphism (of Lie algebras) if `f([x, y]) = [f(x), f(y)]` for all
|
|
39
|
+
`x, y \in \mathfrak{g}`. Thus homomorphisms are completely determined
|
|
40
|
+
by the image of the generators of `\mathfrak{g}`.
|
|
41
|
+
|
|
42
|
+
INPUT:
|
|
43
|
+
|
|
44
|
+
- ``parent`` -- a homset between two Lie algebras
|
|
45
|
+
- ``im_gens`` -- the image of the generators of the domain
|
|
46
|
+
- ``base_map`` -- a homomorphism to apply to the coefficients.
|
|
47
|
+
It should be a map from the base ring of the domain to the
|
|
48
|
+
base ring of the codomain.
|
|
49
|
+
Note that if base_map is nontrivial then the result will
|
|
50
|
+
not be a morphism in the category of Lie algebras over
|
|
51
|
+
the base ring.
|
|
52
|
+
- ``check`` -- whether to run checks on the validity of the defining data
|
|
53
|
+
|
|
54
|
+
EXAMPLES::
|
|
55
|
+
|
|
56
|
+
sage: L = LieAlgebra(QQ, 'x,y,z')
|
|
57
|
+
sage: Lyn = L.Lyndon()
|
|
58
|
+
sage: H = L.Hall()
|
|
59
|
+
doctest:warning...:
|
|
60
|
+
FutureWarning: The Hall basis has not been fully proven correct, but currently no bugs are known
|
|
61
|
+
See https://github.com/sagemath/sage/issues/16823 for details.
|
|
62
|
+
sage: phi = Lyn.coerce_map_from(H); phi
|
|
63
|
+
Lie algebra morphism:
|
|
64
|
+
From: Free Lie algebra generated by (x, y, z) over Rational Field in the Hall basis
|
|
65
|
+
To: Free Lie algebra generated by (x, y, z) over Rational Field in the Lyndon basis
|
|
66
|
+
Defn: x |--> x
|
|
67
|
+
y |--> y
|
|
68
|
+
z |--> z
|
|
69
|
+
|
|
70
|
+
You can provide a base map, creating a semilinear map that (sometimes)
|
|
71
|
+
preserves the Lie bracket::
|
|
72
|
+
|
|
73
|
+
sage: R.<x> = ZZ[]
|
|
74
|
+
sage: K.<i> = NumberField(x^2 + 1)
|
|
75
|
+
sage: cc = K.hom([-i])
|
|
76
|
+
sage: L.<X,Y,Z,W> = LieAlgebra(K, {('X','Y'): {'Z':1}, ('X','Z'): {'W':1}})
|
|
77
|
+
sage: M.<A,B,C,D> = LieAlgebra(K, {('A','B'): {'C':1}, ('A','C'): {'D':1}})
|
|
78
|
+
sage: phi = L.morphism({X:A, Y:B, Z:C, W:D}, base_map=cc)
|
|
79
|
+
sage: phi(X)
|
|
80
|
+
A
|
|
81
|
+
sage: phi(i*X)
|
|
82
|
+
-i*A
|
|
83
|
+
sage: all(phi(x.bracket(y)) == phi(x).bracket(phi(y)) for x,y in cartesian_product_iterator([[X,Y,Z,W],[X,Y,Z,W]]))
|
|
84
|
+
True
|
|
85
|
+
|
|
86
|
+
Note that the Lie bracket should still be preserved, even though the map is no longer linear
|
|
87
|
+
over the base ring::
|
|
88
|
+
|
|
89
|
+
sage: L.<X,Y,Z,W> = LieAlgebra(K, {('X','Y'): {'Z':i}, ('X','Z'): {'W':1}})
|
|
90
|
+
sage: M.<A,B,C,D> = LieAlgebra(K, {('A','B'): {'C':-i}, ('A','C'): {'D':1}})
|
|
91
|
+
sage: phi = L.morphism({X:A, Y:B, Z:C, W:D}, base_map=cc)
|
|
92
|
+
sage: phi(X.bracket(Y))
|
|
93
|
+
-i*C
|
|
94
|
+
sage: phi(X).bracket(phi(Y))
|
|
95
|
+
-i*C
|
|
96
|
+
"""
|
|
97
|
+
def __init__(self, parent, im_gens, base_map=None, check=True):
|
|
98
|
+
"""
|
|
99
|
+
EXAMPLES::
|
|
100
|
+
|
|
101
|
+
sage: L = LieAlgebra(QQ, 'x,y,z')
|
|
102
|
+
sage: Lyn = L.Lyndon()
|
|
103
|
+
sage: H = L.Hall()
|
|
104
|
+
sage: phi = Lyn.coerce_map_from(H)
|
|
105
|
+
|
|
106
|
+
We skip the category test because the Homset's element class
|
|
107
|
+
does not match this class::
|
|
108
|
+
|
|
109
|
+
sage: TestSuite(phi).run(skip=['_test_category'])
|
|
110
|
+
"""
|
|
111
|
+
Morphism.__init__(self, parent)
|
|
112
|
+
if not isinstance(im_gens, Sequence_generic):
|
|
113
|
+
if not isinstance(im_gens, (tuple, list)):
|
|
114
|
+
im_gens = [im_gens]
|
|
115
|
+
im_gens = Sequence(im_gens, parent.codomain(), immutable=True)
|
|
116
|
+
if check:
|
|
117
|
+
if len(im_gens) != len(parent.domain().lie_algebra_generators()):
|
|
118
|
+
raise ValueError("number of images must equal number of generators")
|
|
119
|
+
if base_map is not None and not (base_map.domain() is parent.domain().base_ring() and parent.codomain().base_ring().has_coerce_map_from(base_map.codomain())):
|
|
120
|
+
raise ValueError("invalid base homomorphism")
|
|
121
|
+
# TODO: Implement a (meaningful) _is_valid_homomorphism_()
|
|
122
|
+
#if not parent.domain()._is_valid_homomorphism_(parent.codomain(), im_gens, base_map=base_map):
|
|
123
|
+
# raise ValueError("relations do not all (canonically) map to 0 under map determined by images of generators")
|
|
124
|
+
if not im_gens.is_immutable():
|
|
125
|
+
import copy
|
|
126
|
+
im_gens = copy.copy(im_gens)
|
|
127
|
+
im_gens.set_immutable()
|
|
128
|
+
self._im_gens = im_gens
|
|
129
|
+
self._base_map = base_map
|
|
130
|
+
|
|
131
|
+
def _repr_type(self):
|
|
132
|
+
"""
|
|
133
|
+
TESTS::
|
|
134
|
+
|
|
135
|
+
sage: L = LieAlgebra(QQ, 'x,y,z')
|
|
136
|
+
sage: Lyn = L.Lyndon()
|
|
137
|
+
sage: H = L.Hall()
|
|
138
|
+
sage: f = Lyn.coerce_map_from(H)
|
|
139
|
+
sage: type(f)
|
|
140
|
+
<class 'sage.algebras.lie_algebras.morphism.LieAlgebraHomomorphism_im_gens'>
|
|
141
|
+
sage: f._repr_type()
|
|
142
|
+
'Lie algebra'
|
|
143
|
+
"""
|
|
144
|
+
return "Lie algebra"
|
|
145
|
+
|
|
146
|
+
def im_gens(self):
|
|
147
|
+
"""
|
|
148
|
+
Return the images of the generators of the domain.
|
|
149
|
+
|
|
150
|
+
OUTPUT:
|
|
151
|
+
|
|
152
|
+
- ``list`` -- a copy of the list of gens (it is safe to change this)
|
|
153
|
+
|
|
154
|
+
EXAMPLES::
|
|
155
|
+
|
|
156
|
+
sage: L = LieAlgebra(QQ, 'x,y,z')
|
|
157
|
+
sage: Lyn = L.Lyndon()
|
|
158
|
+
sage: H = L.Hall()
|
|
159
|
+
sage: f = Lyn.coerce_map_from(H)
|
|
160
|
+
sage: f.im_gens()
|
|
161
|
+
[x, y, z]
|
|
162
|
+
"""
|
|
163
|
+
return list(self._im_gens)
|
|
164
|
+
|
|
165
|
+
def base_map(self):
|
|
166
|
+
"""
|
|
167
|
+
Return the map on the base ring that is part of the defining
|
|
168
|
+
data for this morphism. May return ``None`` if a coercion is used.
|
|
169
|
+
|
|
170
|
+
EXAMPLES::
|
|
171
|
+
|
|
172
|
+
sage: # needs sage.rings.number_field
|
|
173
|
+
sage: R.<x> = ZZ[]
|
|
174
|
+
sage: K.<i> = NumberField(x^2 + 1)
|
|
175
|
+
sage: cc = K.hom([-i])
|
|
176
|
+
sage: L.<X,Y,Z,W> = LieAlgebra(K, {('X','Y'): {'Z':1}, ('X','Z'): {'W':1}})
|
|
177
|
+
sage: M.<A,B> = LieAlgebra(K, abelian=True)
|
|
178
|
+
sage: phi = L.morphism({X: A, Y: B}, base_map=cc)
|
|
179
|
+
sage: phi(X)
|
|
180
|
+
A
|
|
181
|
+
sage: phi(i*X)
|
|
182
|
+
-i*A
|
|
183
|
+
sage: phi.base_map()
|
|
184
|
+
Ring endomorphism of Number Field in i with defining polynomial x^2 + 1
|
|
185
|
+
Defn: i |--> -i
|
|
186
|
+
"""
|
|
187
|
+
return self._base_map
|
|
188
|
+
|
|
189
|
+
def _richcmp_(self, other, op):
|
|
190
|
+
"""
|
|
191
|
+
Rich comparisons.
|
|
192
|
+
|
|
193
|
+
EXAMPLES::
|
|
194
|
+
|
|
195
|
+
sage: L = LieAlgebra(QQ, 'x,y,z')
|
|
196
|
+
sage: Lyn = L.Lyndon()
|
|
197
|
+
sage: H = L.Hall()
|
|
198
|
+
sage: x,y,z = H.gens()
|
|
199
|
+
sage: f = Hom(Lyn, H)([x,y,z])
|
|
200
|
+
sage: g = Hom(Lyn, H)([x,y,z])
|
|
201
|
+
sage: h = Hom(Lyn, H)([y,x,z])
|
|
202
|
+
sage: f == g
|
|
203
|
+
True
|
|
204
|
+
sage: f is g
|
|
205
|
+
False
|
|
206
|
+
sage: f != h
|
|
207
|
+
True
|
|
208
|
+
"""
|
|
209
|
+
return richcmp((self._im_gens, self._base_map), (other._im_gens, other._base_map), op)
|
|
210
|
+
|
|
211
|
+
def __hash__(self):
|
|
212
|
+
"""
|
|
213
|
+
Return the hash of this morphism.
|
|
214
|
+
|
|
215
|
+
EXAMPLES::
|
|
216
|
+
|
|
217
|
+
sage: L = LieAlgebra(QQ, 'x,y,z')
|
|
218
|
+
sage: Lyn = L.Lyndon()
|
|
219
|
+
sage: H = L.Hall()
|
|
220
|
+
sage: phi = Lyn.coerce_map_from(H)
|
|
221
|
+
sage: hash(phi) == hash(phi)
|
|
222
|
+
True
|
|
223
|
+
"""
|
|
224
|
+
return hash((self._im_gens, self._base_map))
|
|
225
|
+
|
|
226
|
+
def _repr_defn(self):
|
|
227
|
+
"""
|
|
228
|
+
Used in constructing string representation of ``self``.
|
|
229
|
+
|
|
230
|
+
EXAMPLES::
|
|
231
|
+
|
|
232
|
+
sage: L = LieAlgebra(QQ, 'x,y,z')
|
|
233
|
+
sage: Lyn = L.Lyndon()
|
|
234
|
+
sage: H = L.Hall()
|
|
235
|
+
sage: phi = Lyn.coerce_map_from(H)
|
|
236
|
+
sage: print(phi._repr_defn())
|
|
237
|
+
x |--> x
|
|
238
|
+
y |--> y
|
|
239
|
+
z |--> z
|
|
240
|
+
"""
|
|
241
|
+
D = self.domain()
|
|
242
|
+
s = '\n'.join('%s |--> %s' % (x, gen)
|
|
243
|
+
for gen, x in zip(self._im_gens, D.gens()))
|
|
244
|
+
if s and self._base_map is not None:
|
|
245
|
+
s += '\nwith map of base ring'
|
|
246
|
+
return s
|
|
247
|
+
|
|
248
|
+
def _call_(self, x):
|
|
249
|
+
"""
|
|
250
|
+
Evaluate this homomorphism at ``x``.
|
|
251
|
+
|
|
252
|
+
EXAMPLES::
|
|
253
|
+
|
|
254
|
+
sage: L = LieAlgebra(QQ, 'x,y,z')
|
|
255
|
+
sage: Lyn = L.Lyndon()
|
|
256
|
+
sage: H = L.Hall()
|
|
257
|
+
sage: phi = Lyn.coerce_map_from(H)
|
|
258
|
+
sage: a = H.graded_basis(5)[12]; a
|
|
259
|
+
[z, [y, [x, [x, z]]]]
|
|
260
|
+
sage: phi(a)
|
|
261
|
+
[x, [[x, z], [y, z]]] + [x, [[[x, z], z], y]]
|
|
262
|
+
+ [[x, y], [[x, z], z]] + [[x, [y, z]], [x, z]]
|
|
263
|
+
"""
|
|
264
|
+
return x._im_gens_(self.codomain(), self.im_gens(), base_map=self.base_map())
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
class LieAlgebraHomset(Homset):
|
|
268
|
+
"""
|
|
269
|
+
Homset between two Lie algebras.
|
|
270
|
+
|
|
271
|
+
.. TODO::
|
|
272
|
+
|
|
273
|
+
This is a very minimal implementation which does not
|
|
274
|
+
have coercions of the morphisms.
|
|
275
|
+
"""
|
|
276
|
+
def __init__(self, X, Y, category=None, base=None, check=True):
|
|
277
|
+
"""
|
|
278
|
+
Initialize ``self``.
|
|
279
|
+
|
|
280
|
+
EXAMPLES::
|
|
281
|
+
|
|
282
|
+
sage: L = LieAlgebra(QQ, 'x,y,z')
|
|
283
|
+
sage: Lyn = L.Lyndon()
|
|
284
|
+
sage: H = L.Hall()
|
|
285
|
+
sage: HS = Hom(Lyn, H)
|
|
286
|
+
|
|
287
|
+
We skip the elements test since homsets are not proper parents::
|
|
288
|
+
|
|
289
|
+
sage: TestSuite(HS).run(skip=["_test_elements"])
|
|
290
|
+
"""
|
|
291
|
+
if base is None:
|
|
292
|
+
base = X.base_ring()
|
|
293
|
+
Homset.__init__(self, X, Y, category, base, check)
|
|
294
|
+
|
|
295
|
+
def _repr_(self):
|
|
296
|
+
"""
|
|
297
|
+
Return a string representation of ``self``.
|
|
298
|
+
|
|
299
|
+
EXAMPLES::
|
|
300
|
+
|
|
301
|
+
sage: L = LieAlgebra(QQ, 'x,y,z')
|
|
302
|
+
sage: Lyn = L.Lyndon()
|
|
303
|
+
sage: H = L.Hall()
|
|
304
|
+
sage: Hom(Lyn, H)
|
|
305
|
+
Set of Lie algebra morphisms
|
|
306
|
+
from Free Lie algebra generated by (x, y, z) over Rational Field in the Lyndon basis
|
|
307
|
+
to Free Lie algebra generated by (x, y, z) over Rational Field in the Hall basis
|
|
308
|
+
"""
|
|
309
|
+
return "Set of Lie algebra morphisms from {} to {}".format(
|
|
310
|
+
self.domain(), self.codomain())
|
|
311
|
+
|
|
312
|
+
def __call__(self, im_gens, check=True):
|
|
313
|
+
"""
|
|
314
|
+
Construct a morphism from ``im_gens``.
|
|
315
|
+
|
|
316
|
+
EXAMPLES::
|
|
317
|
+
|
|
318
|
+
sage: L = LieAlgebra(QQ, 'x,y,z')
|
|
319
|
+
sage: Lyn = L.Lyndon()
|
|
320
|
+
sage: H = L.Hall()
|
|
321
|
+
sage: HS = Hom(Lyn, H)
|
|
322
|
+
sage: x,y,z = Lyn.gens()
|
|
323
|
+
sage: phi = HS([z,x,y])
|
|
324
|
+
sage: phi(x + Lyn[z,y])
|
|
325
|
+
z - [x, y]
|
|
326
|
+
|
|
327
|
+
sage: HS = Hom(Lyn, Lyn)
|
|
328
|
+
sage: phi = HS([z,x,y])
|
|
329
|
+
sage: a = Lyn([z, [x, [[y, z], x]]]); a
|
|
330
|
+
[x, [x, [[y, z], z]]] + [x, [[x, z], [y, z]]] - [[x, [y, z]], [x, z]]
|
|
331
|
+
sage: phi(a)
|
|
332
|
+
[[x, [[y, z], z]], y] + 2*[[[x, z], [y, z]], y] + [[[[x, z], z], y], y]
|
|
333
|
+
sage: phi(phi(phi(a))) == a
|
|
334
|
+
True
|
|
335
|
+
"""
|
|
336
|
+
if isinstance(im_gens, Morphism):
|
|
337
|
+
return im_gens
|
|
338
|
+
from sage.categories.lie_algebras import LieAlgebras
|
|
339
|
+
if (self.domain() in LieAlgebras.FiniteDimensional.WithBasis
|
|
340
|
+
and self.codomain() in LieAlgebras.FiniteDimensional.WithBasis):
|
|
341
|
+
try:
|
|
342
|
+
return LieAlgebraMorphism_from_generators(self.domain(), im_gens,
|
|
343
|
+
codomain=self.codomain(),
|
|
344
|
+
check=check)
|
|
345
|
+
except (TypeError, ValueError):
|
|
346
|
+
pass
|
|
347
|
+
return LieAlgebraHomomorphism_im_gens(self, im_gens)
|
|
348
|
+
|
|
349
|
+
@cached_method
|
|
350
|
+
def zero(self):
|
|
351
|
+
"""
|
|
352
|
+
Return the zero morphism.
|
|
353
|
+
|
|
354
|
+
EXAMPLES::
|
|
355
|
+
|
|
356
|
+
sage: L = LieAlgebra(QQ, 'x,y,z')
|
|
357
|
+
sage: Lyn = L.Lyndon()
|
|
358
|
+
sage: H = L.Hall()
|
|
359
|
+
sage: HS = Hom(Lyn, H)
|
|
360
|
+
sage: HS.zero()
|
|
361
|
+
Generic morphism:
|
|
362
|
+
From: Free Lie algebra generated by (x, y, z) over Rational Field in the Lyndon basis
|
|
363
|
+
To: Free Lie algebra generated by (x, y, z) over Rational Field in the Hall basis
|
|
364
|
+
"""
|
|
365
|
+
return SetMorphism(self, lambda x: self.codomain().zero())
|
|
366
|
+
|
|
367
|
+
_an_element_ = zero
|
|
368
|
+
|
|
369
|
+
|
|
370
|
+
class LieAlgebraMorphism_from_generators(LieAlgebraHomomorphism_im_gens):
|
|
371
|
+
r"""
|
|
372
|
+
A morphism between two Lie algebras defined by images of a
|
|
373
|
+
generating set as a Lie algebra.
|
|
374
|
+
|
|
375
|
+
This is the Lie algebra morphism `\phi \colon L \to K` defined on
|
|
376
|
+
the chosen basis of `L` to that of `K` be using the image of some
|
|
377
|
+
generating set (as a Lie algebra) of `L`.
|
|
378
|
+
|
|
379
|
+
INPUT:
|
|
380
|
+
|
|
381
|
+
- ``on_generators`` -- dictionary ``{X: Y}`` of the images `Y`
|
|
382
|
+
in ``codomain`` of elements `X` of ``domain``
|
|
383
|
+
- ``codomain`` -- a Lie algebra (optional); this is inferred
|
|
384
|
+
from the values of ``on_generators`` if not given
|
|
385
|
+
- ``base_map`` -- a homomorphism to apply to the coefficients.
|
|
386
|
+
It should be a map from the base ring of the domain to the
|
|
387
|
+
base ring of the codomain.
|
|
388
|
+
Note that if base_map is nontrivial then the result will
|
|
389
|
+
not be a morphism in the category of Lie algebras over
|
|
390
|
+
the base ring.
|
|
391
|
+
- ``check`` -- boolean (default: ``True``); if ``False`` the
|
|
392
|
+
values on the Lie brackets implied by ``on_generators`` will
|
|
393
|
+
not be checked for contradictory values
|
|
394
|
+
|
|
395
|
+
EXAMPLES:
|
|
396
|
+
|
|
397
|
+
A reflection of one horizontal vector in the Heisenberg algebra::
|
|
398
|
+
|
|
399
|
+
sage: L.<X,Y,Z> = LieAlgebra(QQ, {('X','Y'): {'Z':1}})
|
|
400
|
+
sage: phi = L.morphism({X:-X, Y:Y}); phi
|
|
401
|
+
Lie algebra endomorphism of Lie algebra on 3 generators (X, Y, Z) over Rational Field
|
|
402
|
+
Defn: X |--> -X
|
|
403
|
+
Y |--> Y
|
|
404
|
+
Z |--> -Z
|
|
405
|
+
|
|
406
|
+
There is no Lie algebra morphism that reflects one horizontal vector,
|
|
407
|
+
but not the vertical one::
|
|
408
|
+
|
|
409
|
+
sage: L.morphism({X:-X, Y:Y, Z:Z})
|
|
410
|
+
Traceback (most recent call last):
|
|
411
|
+
...
|
|
412
|
+
ValueError: this does not define a Lie algebra morphism;
|
|
413
|
+
contradictory values for brackets of length 2
|
|
414
|
+
|
|
415
|
+
Checking for mistakes can be disabled, which can produce
|
|
416
|
+
invalid results::
|
|
417
|
+
|
|
418
|
+
sage: phi = L.morphism({X:-X, Y:Y, Z:Z}, check=False); phi
|
|
419
|
+
Lie algebra endomorphism of Lie algebra on 3 generators (X, Y, Z) over Rational Field
|
|
420
|
+
Defn: X |--> -X
|
|
421
|
+
Y |--> Y
|
|
422
|
+
Z |--> Z
|
|
423
|
+
sage: L[phi(X), phi(Y)] == phi(L[X,Y])
|
|
424
|
+
False
|
|
425
|
+
|
|
426
|
+
The set of keys must generate the Lie algebra::
|
|
427
|
+
|
|
428
|
+
sage: L.morphism({X: X})
|
|
429
|
+
Traceback (most recent call last):
|
|
430
|
+
...
|
|
431
|
+
ValueError: [X] is not a generating set of Lie algebra on 3 generators
|
|
432
|
+
(X, Y, Z) over Rational Field
|
|
433
|
+
|
|
434
|
+
Over non-fields, generating subsets are more restricted::
|
|
435
|
+
|
|
436
|
+
sage: L.<X,Y,Z> = LieAlgebra(ZZ, {('X','Y'): {'Z':2}})
|
|
437
|
+
sage: L.morphism({X: X, Y: Y})
|
|
438
|
+
Traceback (most recent call last):
|
|
439
|
+
...
|
|
440
|
+
ValueError: [X, Y] is not a generating set of Lie algebra on 3
|
|
441
|
+
generators (X, Y, Z) over Integer Ring
|
|
442
|
+
|
|
443
|
+
The generators do not have to correspond to the defined generating
|
|
444
|
+
set of the domain::
|
|
445
|
+
|
|
446
|
+
sage: L.<X,Y,Z,W> = LieAlgebra(QQ, {('X','Y'): {'Z':1}, ('X','Z'): {'W':1}})
|
|
447
|
+
sage: K.<A,B,C> = LieAlgebra(QQ, {('A','B'): {'C':2}})
|
|
448
|
+
sage: phi = L.morphism({X+2*Y: A, X-Y: B}); phi
|
|
449
|
+
Lie algebra morphism:
|
|
450
|
+
From: Lie algebra on 4 generators (X, Y, Z, W) over Rational Field
|
|
451
|
+
To: Lie algebra on 3 generators (A, B, C) over Rational Field
|
|
452
|
+
Defn: X |--> 1/3*A + 2/3*B
|
|
453
|
+
Y |--> 1/3*A - 1/3*B
|
|
454
|
+
Z |--> -2/3*C
|
|
455
|
+
W |--> 0
|
|
456
|
+
sage: phi(X+2*Y)
|
|
457
|
+
A
|
|
458
|
+
sage: phi(X)
|
|
459
|
+
1/3*A + 2/3*B
|
|
460
|
+
sage: phi(W)
|
|
461
|
+
0
|
|
462
|
+
sage: phi(Z)
|
|
463
|
+
-2/3*C
|
|
464
|
+
sage: all(K[phi(p), phi(q)] == phi(L[p,q])
|
|
465
|
+
....: for p in L.basis() for q in L.basis())
|
|
466
|
+
True
|
|
467
|
+
|
|
468
|
+
A quotient type Lie algebra morphism::
|
|
469
|
+
|
|
470
|
+
sage: K.<A,B> = LieAlgebra(SR, abelian=True) # needs sage.symbolic
|
|
471
|
+
sage: L.morphism({X: A, Y: B}) # needs sage.symbolic
|
|
472
|
+
Lie algebra morphism:
|
|
473
|
+
From: Lie algebra on 4 generators (X, Y, Z, W) over Rational Field
|
|
474
|
+
To: Abelian Lie algebra on 2 generators (A, B) over Symbolic Ring
|
|
475
|
+
Defn: X |--> A
|
|
476
|
+
Y |--> B
|
|
477
|
+
Z |--> 0
|
|
478
|
+
W |--> 0
|
|
479
|
+
"""
|
|
480
|
+
def __init__(self, on_generators, domain=None, codomain=None, check=True, base_map=None, category=None):
|
|
481
|
+
r"""
|
|
482
|
+
Initialize ``self``.
|
|
483
|
+
|
|
484
|
+
The keys of ``on_generators`` need to generate ``domain``
|
|
485
|
+
as a Lie algebra.
|
|
486
|
+
|
|
487
|
+
.. TODO::
|
|
488
|
+
|
|
489
|
+
It might be possible to extract an explicit bracket relation that
|
|
490
|
+
fails whenever some linear system fails to be solved. This would
|
|
491
|
+
allow outputting an even more explicit error.
|
|
492
|
+
|
|
493
|
+
TESTS:
|
|
494
|
+
|
|
495
|
+
Test suite for a morphism::
|
|
496
|
+
|
|
497
|
+
sage: L.<X,Y,Z,W> = LieAlgebra(QQ, {('X','Y'): {'Z':1}, ('X','Z'): {'W':1}})
|
|
498
|
+
sage: K.<A,B,C> = LieAlgebra(QQ, {('A','B'): {'C':2}})
|
|
499
|
+
sage: phi = L.morphism({X+2*Y: A, X-Y: B})
|
|
500
|
+
sage: TestSuite(phi).run(skip=['_test_category'])
|
|
501
|
+
|
|
502
|
+
Failure of inferring codomain::
|
|
503
|
+
|
|
504
|
+
sage: L.<X> = LieAlgebra(QQ, abelian=True)
|
|
505
|
+
sage: L.morphism({X: int(1)})
|
|
506
|
+
Traceback (most recent call last):
|
|
507
|
+
...
|
|
508
|
+
TypeError: codomain <class 'int'> is not a Lie algebra
|
|
509
|
+
|
|
510
|
+
sage: from sage.algebras.lie_algebras.morphism import LieAlgebraMorphism_from_generators
|
|
511
|
+
sage: LieAlgebraMorphism_from_generators({ZZ(1): X})
|
|
512
|
+
Traceback (most recent call last):
|
|
513
|
+
...
|
|
514
|
+
TypeError: domain Integer Ring is not a Lie algebra
|
|
515
|
+
sage: LieAlgebraMorphism_from_generators({})
|
|
516
|
+
Traceback (most recent call last):
|
|
517
|
+
...
|
|
518
|
+
ValueError: no elements to infer domain from
|
|
519
|
+
sage: LieAlgebraMorphism_from_generators({}, domain=L)
|
|
520
|
+
Traceback (most recent call last):
|
|
521
|
+
...
|
|
522
|
+
ValueError: no elements to infer codomain from
|
|
523
|
+
|
|
524
|
+
We check that we can specify a base map to get a semi-linear morphism of Lie algebras::
|
|
525
|
+
|
|
526
|
+
sage: # needs sage.rings.number_field
|
|
527
|
+
sage: R.<x> = ZZ[]
|
|
528
|
+
sage: K.<i> = NumberField(x^2 + 1)
|
|
529
|
+
sage: cc = K.hom([-i])
|
|
530
|
+
sage: L.<X,Y,Z> = LieAlgebra(K, {('X','Y'): {'Z':i}})
|
|
531
|
+
sage: M.<A,B,C> = LieAlgebra(K, {('A','B'): {'C':-i}})
|
|
532
|
+
sage: phi = L.morphism({X:A, Y:B, Z:C}, base_map=cc)
|
|
533
|
+
sage: phi(Z)
|
|
534
|
+
C
|
|
535
|
+
sage: phi(i*Z)
|
|
536
|
+
-i*C
|
|
537
|
+
"""
|
|
538
|
+
from sage.categories.lie_algebras import LieAlgebras
|
|
539
|
+
|
|
540
|
+
cm = get_coercion_model()
|
|
541
|
+
if domain is None:
|
|
542
|
+
if not on_generators:
|
|
543
|
+
raise ValueError("no elements to infer domain from")
|
|
544
|
+
domain = cm.common_parent(*on_generators)
|
|
545
|
+
if domain not in LieAlgebras:
|
|
546
|
+
raise TypeError("domain %s is not a Lie algebra" % domain)
|
|
547
|
+
if codomain is None:
|
|
548
|
+
if not on_generators:
|
|
549
|
+
raise ValueError("no elements to infer codomain from")
|
|
550
|
+
codomain = cm.common_parent(*list(on_generators.values()))
|
|
551
|
+
if codomain not in LieAlgebras:
|
|
552
|
+
raise TypeError("codomain %s is not a Lie algebra" % codomain)
|
|
553
|
+
|
|
554
|
+
# If the base map is nontrivial, ideally we would have machinery
|
|
555
|
+
# here to determine how the base map affects the category of the
|
|
556
|
+
# resulting morphism. But for now it's not clear how to do this,
|
|
557
|
+
# so we leave the category as the default for now.
|
|
558
|
+
parent = Hom(domain, codomain, category=category)
|
|
559
|
+
m = domain.module()
|
|
560
|
+
cm = codomain.module()
|
|
561
|
+
|
|
562
|
+
spanning_set = [X.to_vector() for X in on_generators]
|
|
563
|
+
im_gens = [Y.to_vector() for Y in on_generators.values()]
|
|
564
|
+
|
|
565
|
+
if not im_gens:
|
|
566
|
+
LieAlgebraHomomorphism_im_gens.__init__(self, parent, [], base_map=base_map, check=check)
|
|
567
|
+
return
|
|
568
|
+
|
|
569
|
+
# helper function to solve linear systems Ax = b, where both x and b
|
|
570
|
+
# are vectors of vectors
|
|
571
|
+
def solve_linear_system(A, b, check):
|
|
572
|
+
R = cm.base_ring()
|
|
573
|
+
A_inv = A.solve_left(matrix.identity(A.ncols()))
|
|
574
|
+
|
|
575
|
+
if check:
|
|
576
|
+
# Verify validity of solution x = A_inv*b. Since b is a vector of
|
|
577
|
+
# vectors, need to expand the matrix product by hand.
|
|
578
|
+
M = A * A_inv
|
|
579
|
+
for Mi, bk in zip(M.rows(), b):
|
|
580
|
+
test_bk = sum((R(Mij) * bj for Mij,bj in zip(Mi,b)), cm.zero())
|
|
581
|
+
if test_bk != bk:
|
|
582
|
+
raise ValueError("contradictory linear system")
|
|
583
|
+
|
|
584
|
+
return [sum((R(Aij) * bk for Aij,bk in zip(Ai,b)), cm.zero())
|
|
585
|
+
for Ai in A_inv.rows()]
|
|
586
|
+
|
|
587
|
+
bracketlength = 1
|
|
588
|
+
n = 0
|
|
589
|
+
while True:
|
|
590
|
+
sm = m.submodule(spanning_set)
|
|
591
|
+
A = matrix(sm.base_ring(), [sm.coordinate_vector(X) for X in spanning_set])
|
|
592
|
+
if base_map is not None:
|
|
593
|
+
A = A.apply_map(base_map)
|
|
594
|
+
try:
|
|
595
|
+
im_gens = solve_linear_system(A, im_gens, check)
|
|
596
|
+
except ValueError:
|
|
597
|
+
raise ValueError("this does not define a Lie algebra morphism; "
|
|
598
|
+
"contradictory values for brackets of length %d"
|
|
599
|
+
% bracketlength)
|
|
600
|
+
|
|
601
|
+
spanning_set = list(sm.basis())
|
|
602
|
+
if n == len(spanning_set):
|
|
603
|
+
# no increase in dimension => no further values will be computed
|
|
604
|
+
break
|
|
605
|
+
|
|
606
|
+
# compute brackets and repeat
|
|
607
|
+
bracketlength += 1
|
|
608
|
+
n = len(spanning_set)
|
|
609
|
+
for i,j in combinations(range(n), 2):
|
|
610
|
+
# add the value of the bracket to known images
|
|
611
|
+
Z = domain.bracket(spanning_set[i], spanning_set[j])
|
|
612
|
+
imZ = codomain.bracket(im_gens[i], im_gens[j])
|
|
613
|
+
spanning_set.append(Z.to_vector())
|
|
614
|
+
im_gens.append(imZ.to_vector())
|
|
615
|
+
|
|
616
|
+
# verify that sm is the full module m
|
|
617
|
+
if not sm.has_coerce_map_from(m):
|
|
618
|
+
raise ValueError("%s is not a generating set of %s"
|
|
619
|
+
% (list(on_generators), domain))
|
|
620
|
+
|
|
621
|
+
A = matrix(m.base_ring(), spanning_set)
|
|
622
|
+
im_gens = solve_linear_system(A, im_gens, check)
|
|
623
|
+
|
|
624
|
+
LieAlgebraHomomorphism_im_gens.__init__(self, parent, im_gens, base_map=base_map, check=check)
|
|
625
|
+
|
|
626
|
+
def _call_(self, x):
|
|
627
|
+
"""
|
|
628
|
+
Evaluate this homomorphism at ``x``.
|
|
629
|
+
|
|
630
|
+
EXAMPLES::
|
|
631
|
+
|
|
632
|
+
sage: L.<X,Y,Z,W> = LieAlgebra(QQ, {('X','Y'): {'Z':1}, ('X','Z'): {'W':1}})
|
|
633
|
+
sage: K.<A,B> = LieAlgebra(SR, abelian=True) # needs sage.symbolic
|
|
634
|
+
sage: phi = L.morphism({X: A, Y: B}) # needs sage.symbolic
|
|
635
|
+
sage: phi(X) # needs sage.symbolic
|
|
636
|
+
A
|
|
637
|
+
sage: phi(Y) # needs sage.symbolic
|
|
638
|
+
B
|
|
639
|
+
sage: phi(Z) # needs sage.symbolic
|
|
640
|
+
0
|
|
641
|
+
sage: phi(W) # needs sage.symbolic
|
|
642
|
+
0
|
|
643
|
+
sage: phi(-X + 3*Y) # needs sage.symbolic
|
|
644
|
+
-A + 3*B
|
|
645
|
+
|
|
646
|
+
sage: K.<A,B,C> = LieAlgebra(QQ, {('A','B'): {'C':2}})
|
|
647
|
+
sage: phi = L.morphism({X+2*Y: A, X-Y: B})
|
|
648
|
+
sage: phi(X)
|
|
649
|
+
1/3*A + 2/3*B
|
|
650
|
+
sage: phi(Y)
|
|
651
|
+
1/3*A - 1/3*B
|
|
652
|
+
sage: phi(3*X+Y)
|
|
653
|
+
4/3*A + 5/3*B
|
|
654
|
+
sage: phi(3/2*W-Z+Y)
|
|
655
|
+
1/3*A - 1/3*B + 2/3*C
|
|
656
|
+
"""
|
|
657
|
+
C = self.codomain()
|
|
658
|
+
bh = self._base_map
|
|
659
|
+
if bh is None:
|
|
660
|
+
bh = lambda t: t
|
|
661
|
+
return C.sum(bh(c) * self._im_gens[i] for i, c in (x.to_vector()).items())
|