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,767 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
# sage.doctest: needs sage.graphs sage.rings.number_field
|
|
3
|
+
"""
|
|
4
|
+
Center of a Universal Enveloping Algebra
|
|
5
|
+
|
|
6
|
+
AUTHORS:
|
|
7
|
+
|
|
8
|
+
- Travis Scrimshaw (2024-01-02): Initial version
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
# ****************************************************************************
|
|
12
|
+
# Copyright (C) 2024 Travis Scrimshaw <tcscrims at gmail.com>
|
|
13
|
+
#
|
|
14
|
+
# This program is free software: you can redistribute it and/or modify
|
|
15
|
+
# it under the terms of the GNU General Public License as published by
|
|
16
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
17
|
+
# (at your option) any later version.
|
|
18
|
+
# https://www.gnu.org/licenses/
|
|
19
|
+
# ****************************************************************************
|
|
20
|
+
|
|
21
|
+
# from sage.structure.unique_representation import UniqueRepresentation
|
|
22
|
+
# from sage.structure.parent import Parent
|
|
23
|
+
from sage.combinat.free_module import CombinatorialFreeModule
|
|
24
|
+
from sage.combinat.integer_lists.invlex import IntegerListsLex
|
|
25
|
+
from sage.matrix.constructor import matrix
|
|
26
|
+
from sage.monoids.indexed_free_monoid import IndexedFreeAbelianMonoid
|
|
27
|
+
from sage.monoids.indexed_free_monoid import IndexedMonoid
|
|
28
|
+
from sage.combinat.root_system.coxeter_group import CoxeterGroup
|
|
29
|
+
from sage.combinat.integer_vector_weighted import iterator_fast as intvecwt_iterator
|
|
30
|
+
from sage.sets.non_negative_integers import NonNegativeIntegers
|
|
31
|
+
from sage.sets.finite_enumerated_set import FiniteEnumeratedSet
|
|
32
|
+
from sage.sets.family import Family
|
|
33
|
+
from sage.rings.integer_ring import ZZ
|
|
34
|
+
from sage.categories.kac_moody_algebras import KacMoodyAlgebras
|
|
35
|
+
from sage.categories.finite_dimensional_lie_algebras_with_basis import FiniteDimensionalLieAlgebrasWithBasis
|
|
36
|
+
from sage.categories.graded_algebras_with_basis import GradedAlgebrasWithBasis
|
|
37
|
+
from sage.categories.fields import Fields
|
|
38
|
+
from sage.categories.monoids import Monoids
|
|
39
|
+
from sage.categories.enumerated_sets import EnumeratedSets
|
|
40
|
+
from sage.misc.cachefunc import cached_method
|
|
41
|
+
from sage.misc.lazy_attribute import lazy_attribute
|
|
42
|
+
from sage.data_structures.blas_dict import iaxpy
|
|
43
|
+
from collections import deque
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class CenterIndices(IndexedFreeAbelianMonoid):
|
|
47
|
+
r"""
|
|
48
|
+
Set of basis indices for the center of a universal enveloping algebra.
|
|
49
|
+
|
|
50
|
+
This also constructs the lift from the center to the universal enveloping
|
|
51
|
+
algebra as part of computing the generators and basis elements. The
|
|
52
|
+
basic algorithm is to construct the centralizer of each filtered
|
|
53
|
+
component in increasing order (as each is a finite dimensional vector
|
|
54
|
+
space). For more precise details, see [Motsak2006]_.
|
|
55
|
+
"""
|
|
56
|
+
@staticmethod
|
|
57
|
+
def __classcall__(cls, center):
|
|
58
|
+
r"""
|
|
59
|
+
Normalize input to ensure a unique representation.
|
|
60
|
+
|
|
61
|
+
EXAMPLES::
|
|
62
|
+
|
|
63
|
+
sage: from sage.algebras.lie_algebras.center_uea import CenterIndices
|
|
64
|
+
sage: g = lie_algebras.pwitt(GF(3), 3)
|
|
65
|
+
sage: U = g.pbw_basis()
|
|
66
|
+
sage: Z = U.center()
|
|
67
|
+
sage: CenterIndices(Z) is CenterIndices(Z)
|
|
68
|
+
True
|
|
69
|
+
"""
|
|
70
|
+
return super(IndexedMonoid, cls).__classcall__(cls, center)
|
|
71
|
+
|
|
72
|
+
def __init__(self, center, indices=None):
|
|
73
|
+
r"""
|
|
74
|
+
Initialize ``self``.
|
|
75
|
+
|
|
76
|
+
EXAMPLES::
|
|
77
|
+
|
|
78
|
+
sage: g = lie_algebras.pwitt(GF(5), 5)
|
|
79
|
+
sage: U = g.pbw_basis()
|
|
80
|
+
sage: Z = U.center()
|
|
81
|
+
sage: I = Z.indices()
|
|
82
|
+
sage: TestSuite(I).run(max_runs=7)
|
|
83
|
+
"""
|
|
84
|
+
if indices is None:
|
|
85
|
+
indices = NonNegativeIntegers()
|
|
86
|
+
category = Monoids() & EnumeratedSets().Infinite()
|
|
87
|
+
IndexedFreeAbelianMonoid.__init__(self, indices, prefix='Z', category=category)
|
|
88
|
+
|
|
89
|
+
self._center = center
|
|
90
|
+
self._envelop_alg = self._center._envelop_alg
|
|
91
|
+
self._g = self._envelop_alg._g
|
|
92
|
+
# The _lift_map will be a dict with the keys being the degree and the values
|
|
93
|
+
# given as dicts with the keys being the leading support. This will be
|
|
94
|
+
# used to do the corresponding reductions.
|
|
95
|
+
self._lift_map = {0: {self._envelop_alg.one_basis(): self._envelop_alg.one()}}
|
|
96
|
+
self._cur_deg = 0
|
|
97
|
+
self._cur_vecs = deque() # we do a lot of deletions in the middle
|
|
98
|
+
# The _cur_basis is a mapping from the leading supports to a monoid element of self
|
|
99
|
+
self._cur_basis = {self._envelop_alg.one_basis(): self.one()}
|
|
100
|
+
self._cur_basis_inv = {self.one(): self._envelop_alg.one_basis()}
|
|
101
|
+
self._gen_degrees = {}
|
|
102
|
+
self._cur_num_gens = 0
|
|
103
|
+
|
|
104
|
+
def _repr_(self):
|
|
105
|
+
r"""
|
|
106
|
+
Return a string representation of ``self``.
|
|
107
|
+
|
|
108
|
+
EXAMPLES::
|
|
109
|
+
|
|
110
|
+
sage: g = lie_algebras.pwitt(GF(5), 5)
|
|
111
|
+
sage: U = g.pbw_basis()
|
|
112
|
+
sage: Z = U.center()
|
|
113
|
+
sage: Z.indices()
|
|
114
|
+
Basis indices of Center of Universal enveloping algebra of
|
|
115
|
+
The 5-Witt Lie algebra over Finite Field of size 5 in the Poincare-Birkhoff-Witt basis
|
|
116
|
+
"""
|
|
117
|
+
return "Basis indices of {}".format(self._center)
|
|
118
|
+
|
|
119
|
+
def _latex_(self):
|
|
120
|
+
r"""
|
|
121
|
+
Return a latex representation of ``self``.
|
|
122
|
+
|
|
123
|
+
EXAMPLES::
|
|
124
|
+
|
|
125
|
+
sage: g = lie_algebras.pwitt(GF(5), 5)
|
|
126
|
+
sage: U = g.pbw_basis()
|
|
127
|
+
sage: Z = U.center()
|
|
128
|
+
sage: I = Z.indices()
|
|
129
|
+
sage: latex(I)
|
|
130
|
+
B\left( Z\left( PBW\left( \mathcal{W}(5)_{\Bold{F}_{5}} \right) \right) \right)
|
|
131
|
+
"""
|
|
132
|
+
from sage.misc.latex import latex
|
|
133
|
+
return r"B\left( {} \right)".format(latex(self._center))
|
|
134
|
+
|
|
135
|
+
def lift_on_basis(self, m):
|
|
136
|
+
r"""
|
|
137
|
+
Return the image of the basis element indexed by ``m`` in the
|
|
138
|
+
universal enveloping algebra.
|
|
139
|
+
|
|
140
|
+
EXAMPLES::
|
|
141
|
+
|
|
142
|
+
sage: g = lie_algebras.Heisenberg(QQ, 3)
|
|
143
|
+
sage: U = g.pbw_basis()
|
|
144
|
+
sage: Z = U.center()
|
|
145
|
+
sage: I = Z.indices()
|
|
146
|
+
sage: z0 = I.monoid_generators()[0]
|
|
147
|
+
sage: I._lift_map
|
|
148
|
+
{0: {1: 1}}
|
|
149
|
+
sage: I.lift_on_basis(z0)
|
|
150
|
+
PBW['z']
|
|
151
|
+
sage: I._lift_map
|
|
152
|
+
{0: {1: 1}, 1: {PBW['z']: PBW['z']}}
|
|
153
|
+
sage: I.lift_on_basis(z0^3)
|
|
154
|
+
PBW['z']^3
|
|
155
|
+
sage: I._lift_map
|
|
156
|
+
{0: {1: 1}, 1: {PBW['z']: PBW['z']}}
|
|
157
|
+
sage: I._construct_next_degree()
|
|
158
|
+
sage: I._construct_next_degree()
|
|
159
|
+
sage: I._lift_map
|
|
160
|
+
{0: {1: 1},
|
|
161
|
+
1: {PBW['z']: PBW['z']},
|
|
162
|
+
2: {PBW['z']^2: PBW['z']^2},
|
|
163
|
+
3: {PBW['z']^3: PBW['z']^3}}
|
|
164
|
+
sage: I.lift_on_basis(z0^3)
|
|
165
|
+
PBW['z']^3
|
|
166
|
+
"""
|
|
167
|
+
while m not in self._cur_basis_inv:
|
|
168
|
+
supp = m.support()
|
|
169
|
+
# We might have not computed the correct degree, but we can lift the
|
|
170
|
+
# element if we have computed all of the corresponding generators.
|
|
171
|
+
if all(i in self._gen_degrees and self._gen_degrees[i] in self._lift_map
|
|
172
|
+
for i in supp):
|
|
173
|
+
ret = self._envelop_alg.one()
|
|
174
|
+
divisors = [mp for mp in self._cur_basis_inv if mp.divides(m) and not mp.is_one()]
|
|
175
|
+
while not m.is_one():
|
|
176
|
+
div = max(divisors, key=lambda elt: len(elt))
|
|
177
|
+
ls = self._cur_basis_inv[div]
|
|
178
|
+
deg = ls.length()
|
|
179
|
+
ret *= self._lift_map[deg][ls]
|
|
180
|
+
m = m // div
|
|
181
|
+
divisors = [mp for mp in divisors if mp.divides(m)]
|
|
182
|
+
return ret
|
|
183
|
+
self._construct_next_degree()
|
|
184
|
+
ls = self._cur_basis_inv[m]
|
|
185
|
+
deg = ls.length()
|
|
186
|
+
return self._lift_map[deg][ls]
|
|
187
|
+
|
|
188
|
+
def __iter__(self):
|
|
189
|
+
r"""
|
|
190
|
+
Iterate over ``self`` in degree increasing order.
|
|
191
|
+
|
|
192
|
+
EXAMPLES::
|
|
193
|
+
|
|
194
|
+
sage: g = lie_algebras.pwitt(GF(3), 6)
|
|
195
|
+
sage: U = g.pbw_basis()
|
|
196
|
+
sage: Z = U.center()
|
|
197
|
+
sage: I = Z.indices()
|
|
198
|
+
sage: it = iter(I)
|
|
199
|
+
sage: [next(it) for _ in range(10)]
|
|
200
|
+
[1, Z[0], Z[1], Z[2], Z[3], Z[4], Z[5], Z[6], Z[7], Z[0]^2]
|
|
201
|
+
"""
|
|
202
|
+
yield self.one() # start with the identity
|
|
203
|
+
deg = 1
|
|
204
|
+
while True:
|
|
205
|
+
while deg not in self._lift_map:
|
|
206
|
+
self._construct_next_degree()
|
|
207
|
+
for ls in self._lift_map[deg]:
|
|
208
|
+
yield self._cur_basis[ls]
|
|
209
|
+
deg += 1
|
|
210
|
+
|
|
211
|
+
def some_elements(self):
|
|
212
|
+
r"""
|
|
213
|
+
Return some elements of ``self``.
|
|
214
|
+
|
|
215
|
+
EXAMPLES::
|
|
216
|
+
|
|
217
|
+
sage: g = lie_algebras.pwitt(GF(3), 3)
|
|
218
|
+
sage: U = g.pbw_basis()
|
|
219
|
+
sage: Z = U.center()
|
|
220
|
+
sage: I = Z.indices()
|
|
221
|
+
sage: I.some_elements()
|
|
222
|
+
[1, Z[0], Z[1], Z[2], Z[0]*Z[1]*Z[2], Z[0]*Z[2]^4, Z[0]^4*Z[1]^3]
|
|
223
|
+
"""
|
|
224
|
+
it = iter(self)
|
|
225
|
+
gens = [next(it) for _ in range(4)]
|
|
226
|
+
# We construct it as a set in case we introduce duplicates.
|
|
227
|
+
ret = set(gens)
|
|
228
|
+
ret.update([self.prod(gens), gens[1] * gens[3]**4, gens[1]**4 * gens[2]**3])
|
|
229
|
+
# Sort the output for uniqueness
|
|
230
|
+
ret = sorted(ret, key=lambda m: (self.degree(m), m.to_word_list()))
|
|
231
|
+
return ret
|
|
232
|
+
|
|
233
|
+
def degree(self, m):
|
|
234
|
+
r"""
|
|
235
|
+
Return the degre of ``m`` in ``self``.
|
|
236
|
+
|
|
237
|
+
EXAMPLES::
|
|
238
|
+
|
|
239
|
+
sage: g = LieAlgebra(QQ, cartan_type=['E', 6])
|
|
240
|
+
sage: U = g.pbw_basis()
|
|
241
|
+
sage: Z = U.center()
|
|
242
|
+
sage: I = Z.indices()
|
|
243
|
+
sage: [I.degree(g) for g in I.monoid_generators()]
|
|
244
|
+
[2, 5, 6, 8, 9, 12]
|
|
245
|
+
sage: [(elt, I.degree(elt)) for elt in I.some_elements()]
|
|
246
|
+
[(1, 0), (Z[0], 2), (Z[0]^2, 4), (Z[1], 5), (Z[0]^3*Z[1], 11),
|
|
247
|
+
(Z[0]^10, 20), (Z[0]*Z[1]^4, 22)]
|
|
248
|
+
"""
|
|
249
|
+
return ZZ.sum(e * self._gen_degrees[i] for i, e in m._monomial.items())
|
|
250
|
+
|
|
251
|
+
def _construct_next_degree(self):
|
|
252
|
+
r"""
|
|
253
|
+
Construct the next elements of ``self`` for the next (uncomputed) degree.
|
|
254
|
+
|
|
255
|
+
EXAMPLES::
|
|
256
|
+
|
|
257
|
+
sage: g = lie_algebras.three_dimensional_by_rank(QQ, 2, 1)
|
|
258
|
+
sage: U = g.pbw_basis()
|
|
259
|
+
sage: Z = U.center()
|
|
260
|
+
sage: I = Z.indices()
|
|
261
|
+
sage: I._lift_map
|
|
262
|
+
{0: {1: 1}}
|
|
263
|
+
sage: I._construct_next_degree()
|
|
264
|
+
sage: I._construct_next_degree()
|
|
265
|
+
sage: I._construct_next_degree()
|
|
266
|
+
sage: I._construct_next_degree()
|
|
267
|
+
sage: I._lift_map
|
|
268
|
+
{0: {1: 1}, 1: {}, 2: {}, 3: {}, 4: {}}
|
|
269
|
+
"""
|
|
270
|
+
UEA = self._envelop_alg
|
|
271
|
+
gens = UEA.algebra_generators()
|
|
272
|
+
monoid = UEA.basis().keys()
|
|
273
|
+
self._cur_deg += 1
|
|
274
|
+
|
|
275
|
+
# We first update the lift map with all possible products
|
|
276
|
+
# Note that we are using the fact that the elements are central
|
|
277
|
+
# so the product order doesn't matter.
|
|
278
|
+
# Since we always update this, it is sufficient to compute it
|
|
279
|
+
new_red = {}
|
|
280
|
+
for i in range(1, self._cur_deg//2+1):
|
|
281
|
+
for ls, lelt in self._lift_map[self._cur_deg-i].items():
|
|
282
|
+
for rs, relt in self._lift_map[i].items():
|
|
283
|
+
supp = ls * rs
|
|
284
|
+
new_red[supp] = lelt * relt
|
|
285
|
+
mon = self._cur_basis[ls] * self._cur_basis[rs]
|
|
286
|
+
self._cur_basis[supp] = mon
|
|
287
|
+
self._cur_basis_inv[mon] = supp
|
|
288
|
+
# TODO: Determine if we need to or benefit from another reduction of the new elements
|
|
289
|
+
self._lift_map[self._cur_deg] = new_red
|
|
290
|
+
|
|
291
|
+
# Determine the PBW elements of the current degree that are not reduced
|
|
292
|
+
# modulo the currently computed center.
|
|
293
|
+
for exps in IntegerListsLex(n=self._cur_deg, length=len(gens)):
|
|
294
|
+
elt = monoid.element_class(monoid, {k: p for k, p in zip(monoid._indices, exps) if p})
|
|
295
|
+
if elt in new_red: # already has a central element with this leading term
|
|
296
|
+
continue
|
|
297
|
+
# A new basis element to consider
|
|
298
|
+
self._cur_vecs.append(UEA.monomial(elt))
|
|
299
|
+
|
|
300
|
+
# Perform the centralization
|
|
301
|
+
R = UEA.base_ring()
|
|
302
|
+
vecs = list(self._cur_vecs)
|
|
303
|
+
for g in gens:
|
|
304
|
+
# TODO: We should hold onto previously computed values under the adjoint action
|
|
305
|
+
ad = [g * v - v * g for v in vecs]
|
|
306
|
+
# Compute the kernel
|
|
307
|
+
supp = set()
|
|
308
|
+
for v in ad:
|
|
309
|
+
supp.update(v._monomial_coefficients)
|
|
310
|
+
supp = sorted(supp, key=UEA._monomial_key, reverse=True)
|
|
311
|
+
if not supp: # no support for the image, so everything is in the kernel
|
|
312
|
+
continue
|
|
313
|
+
M = matrix(R, [[v[s] for v in ad] for s in supp])
|
|
314
|
+
ker = M.right_kernel_matrix()
|
|
315
|
+
vecs = [self._reduce(UEA.linear_combination((vecs[i], c) for i, c in kv.iteritems()))
|
|
316
|
+
for kv in ker.rows()]
|
|
317
|
+
|
|
318
|
+
# Lastly, update the appropriate data
|
|
319
|
+
if not vecs: # No new central elements, so nothing to do
|
|
320
|
+
return
|
|
321
|
+
new_gens = {}
|
|
322
|
+
for v in vecs:
|
|
323
|
+
v = self._reduce(v) # possibly not needed to check this
|
|
324
|
+
if not v:
|
|
325
|
+
continue
|
|
326
|
+
ls = v.trailing_support(key=UEA._monomial_key)
|
|
327
|
+
self._cur_vecs.remove(UEA.monomial(ls))
|
|
328
|
+
new_gens[ls] = self._reduce(v)
|
|
329
|
+
assert (self._cur_num_gens not in self._gen_degrees
|
|
330
|
+
or self._gen_degrees[self._cur_num_gens] == self._cur_deg)
|
|
331
|
+
self._gen_degrees[self._cur_num_gens] = self._cur_deg
|
|
332
|
+
mon = self.gen(self._cur_num_gens)
|
|
333
|
+
self._cur_basis[ls] = mon
|
|
334
|
+
self._cur_basis_inv[mon] = ls
|
|
335
|
+
self._cur_num_gens += 1
|
|
336
|
+
self._lift_map[self._cur_deg].update(new_gens)
|
|
337
|
+
|
|
338
|
+
def _reduce(self, vec):
|
|
339
|
+
r"""
|
|
340
|
+
Return the UEA vector ``vec`` by the currently computed center.
|
|
341
|
+
|
|
342
|
+
EXAMPLES::
|
|
343
|
+
|
|
344
|
+
sage: g = LieAlgebra(QQ, cartan_type=['A', 1])
|
|
345
|
+
sage: U = g.pbw_basis()
|
|
346
|
+
sage: Z = U.center()
|
|
347
|
+
sage: I = Z.indices()
|
|
348
|
+
sage: z0 = I.gen(0)
|
|
349
|
+
sage: I._reduce(I.lift_on_basis(z0))
|
|
350
|
+
0
|
|
351
|
+
sage: max(I._lift_map)
|
|
352
|
+
2
|
|
353
|
+
sage: I._reduce(I.lift_on_basis(z0^2))
|
|
354
|
+
4*PBW[alpha[1]]^2*PBW[-alpha[1]]^2
|
|
355
|
+
+ 2*PBW[alpha[1]]*PBW[alphacheck[1]]^2*PBW[-alpha[1]]
|
|
356
|
+
+ 1/4*PBW[alphacheck[1]]^4 - PBW[alphacheck[1]]^3
|
|
357
|
+
+ PBW[alphacheck[1]]^2
|
|
358
|
+
sage: I._reduce(I.lift_on_basis(z0^2) - I.lift_on_basis(z0))
|
|
359
|
+
4*PBW[alpha[1]]^2*PBW[-alpha[1]]^2
|
|
360
|
+
+ 2*PBW[alpha[1]]*PBW[alphacheck[1]]^2*PBW[-alpha[1]]
|
|
361
|
+
+ 1/4*PBW[alphacheck[1]]^4 - PBW[alphacheck[1]]^3
|
|
362
|
+
+ PBW[alphacheck[1]]^2
|
|
363
|
+
sage: I._construct_next_degree()
|
|
364
|
+
sage: I._construct_next_degree()
|
|
365
|
+
sage: max(I._lift_map)
|
|
366
|
+
4
|
|
367
|
+
sage: I._reduce(I.lift_on_basis(z0^2) - I.lift_on_basis(z0))
|
|
368
|
+
0
|
|
369
|
+
"""
|
|
370
|
+
# This is replicating what SubmoduleWithBasis does
|
|
371
|
+
ret = dict(vec._monomial_coefficients)
|
|
372
|
+
for data in self._lift_map.values():
|
|
373
|
+
for m, qv in data.items():
|
|
374
|
+
if m not in ret:
|
|
375
|
+
continue
|
|
376
|
+
iaxpy(-ret[m] / qv[m], qv._monomial_coefficients, ret)
|
|
377
|
+
return self._envelop_alg._from_dict(ret, remove_zeros=False)
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
class SimpleLieCenterIndices(CenterIndices):
|
|
381
|
+
r"""
|
|
382
|
+
Set of basis indices for the center of a universal enveloping algebra of
|
|
383
|
+
a simple Lie algebra.
|
|
384
|
+
|
|
385
|
+
For more information, see
|
|
386
|
+
:class:`~sage.algebras.lie_algebras.center_uea.CenterIndices`.
|
|
387
|
+
"""
|
|
388
|
+
def __init__(self, center):
|
|
389
|
+
r"""
|
|
390
|
+
Initialize ``self``.
|
|
391
|
+
|
|
392
|
+
EXAMPLES::
|
|
393
|
+
|
|
394
|
+
sage: g = LieAlgebra(QQ, cartan_type=['E', 6])
|
|
395
|
+
sage: U = g.pbw_basis()
|
|
396
|
+
sage: Z = U.center()
|
|
397
|
+
sage: I = Z.indices()
|
|
398
|
+
sage: TestSuite(I).run()
|
|
399
|
+
"""
|
|
400
|
+
self._cartan_type = center._envelop_alg._g.cartan_type()
|
|
401
|
+
r = self._cartan_type.rank()
|
|
402
|
+
super().__init__(center, indices=FiniteEnumeratedSet(range(r)))
|
|
403
|
+
W = CoxeterGroup(self._cartan_type)
|
|
404
|
+
self._gen_degrees = dict(enumerate(W.degrees()))
|
|
405
|
+
|
|
406
|
+
def __iter__(self):
|
|
407
|
+
r"""
|
|
408
|
+
Iterate over ``self`` in degree increasing order.
|
|
409
|
+
|
|
410
|
+
EXAMPLES::
|
|
411
|
+
|
|
412
|
+
sage: g = LieAlgebra(QQ, cartan_type=['E', 6])
|
|
413
|
+
sage: U = g.pbw_basis()
|
|
414
|
+
sage: Z = U.center()
|
|
415
|
+
sage: I = Z.indices()
|
|
416
|
+
sage: it = iter(I)
|
|
417
|
+
sage: [next(it) for _ in range(10)]
|
|
418
|
+
[1, Z[0], Z[0]^2, Z[1], Z[2], Z[0]^3, Z[0]*Z[1], Z[3], Z[0]*Z[2], Z[0]^4]
|
|
419
|
+
"""
|
|
420
|
+
deg = 0
|
|
421
|
+
n = len(self._gen_degrees)
|
|
422
|
+
wts = sorted(self._gen_degrees.values(), reverse=True)
|
|
423
|
+
while True:
|
|
424
|
+
for exps in intvecwt_iterator(deg, wts):
|
|
425
|
+
yield self.element_class(self, {n-1-i: e for i, e in enumerate(exps) if e})
|
|
426
|
+
deg += 1
|
|
427
|
+
|
|
428
|
+
|
|
429
|
+
class CenterUEA(CombinatorialFreeModule):
|
|
430
|
+
r"""
|
|
431
|
+
The center of a universal enveloping algebra.
|
|
432
|
+
|
|
433
|
+
.. TODO::
|
|
434
|
+
|
|
435
|
+
Generalize this to be the centralizer of any set of the UEA.
|
|
436
|
+
|
|
437
|
+
.. TODO::
|
|
438
|
+
|
|
439
|
+
For characteristic `p > 0`, implement the `p`-center of a simple
|
|
440
|
+
Lie algebra. See, e.g.,
|
|
441
|
+
|
|
442
|
+
- Theorem 5.12 of [Motsak2006]_
|
|
443
|
+
- http://www.math.kobe-u.ac.jp/icms2006/icms2006-video/slides/059.pdf
|
|
444
|
+
|
|
445
|
+
EXAMPLES::
|
|
446
|
+
|
|
447
|
+
sage: g = LieAlgebra(QQ, cartan_type=['A', 2])
|
|
448
|
+
sage: U = g.pbw_basis()
|
|
449
|
+
sage: Z = U.center()
|
|
450
|
+
sage: B = Z.basis()
|
|
451
|
+
sage: it = iter(B)
|
|
452
|
+
sage: center_elts = [next(it) for _ in range(6)]; center_elts
|
|
453
|
+
[1, Z[0], Z[1], Z[0]^2, Z[0]*Z[1], Z[1]^2]
|
|
454
|
+
sage: elts = [U(v) for v in center_elts] # long time
|
|
455
|
+
sage: all(v * g == g * v for g in U.algebra_generators() for v in elts) # long time
|
|
456
|
+
True
|
|
457
|
+
|
|
458
|
+
The Heisenberg Lie algebra `H_4` over a finite field; note the basis
|
|
459
|
+
elements `b^p \in Z(U(H_4))` for the basis elements `b \in H_4`::
|
|
460
|
+
|
|
461
|
+
sage: g = lie_algebras.Heisenberg(GF(3), 4)
|
|
462
|
+
sage: U = g.pbw_basis()
|
|
463
|
+
sage: Z = U.center()
|
|
464
|
+
sage: B = Z.basis()
|
|
465
|
+
sage: it = iter(B)
|
|
466
|
+
sage: center_elts = [next(it) for _ in range(12)]; center_elts
|
|
467
|
+
[1, Z[0], Z[0]^2, Z[0]^3, Z[1], Z[2], Z[3], Z[4], Z[5], Z[6], Z[7], Z[8]]
|
|
468
|
+
sage: elts = [U(v) for v in center_elts]; elts
|
|
469
|
+
[1, PBW['z'], PBW['z']^2, PBW['z']^3, PBW['p1']^3, PBW['p2']^3, PBW['p3']^3,
|
|
470
|
+
PBW['p4']^3, PBW['q1']^3, PBW['q2']^3, PBW['q3']^3, PBW['q4']^3]
|
|
471
|
+
sage: all(v * g == g * v for g in U.algebra_generators() for v in elts)
|
|
472
|
+
True
|
|
473
|
+
|
|
474
|
+
An example with a free 4-step nilpotent Lie algebras on 2 generators::
|
|
475
|
+
|
|
476
|
+
sage: # needs sage.combinat
|
|
477
|
+
sage: L = LieAlgebra(QQ, 2, step=4); L
|
|
478
|
+
Free Nilpotent Lie algebra on 8 generators
|
|
479
|
+
(X_1, X_2, X_12, X_112, X_122, X_1112, X_1122, X_1222) over Rational Field
|
|
480
|
+
sage: U = L.pbw_basis()
|
|
481
|
+
sage: Z = U.center()
|
|
482
|
+
sage: it = iter(Z.basis())
|
|
483
|
+
sage: center_elts = [next(it) for _ in range(10)]; center_elts
|
|
484
|
+
[1, Z[0], Z[1], Z[2], Z[0]^2, Z[0]*Z[1], Z[0]*Z[2], Z[1]^2, Z[1]*Z[2], Z[2]^2]
|
|
485
|
+
sage: elts = [U(v) for v in center_elts]; elts
|
|
486
|
+
[1, PBW[(1, 1, 1, 2)], PBW[(1, 1, 2, 2)], PBW[(1, 2, 2, 2)], PBW[(1, 1, 1, 2)]^2,
|
|
487
|
+
PBW[(1, 1, 1, 2)]*PBW[(1, 1, 2, 2)], PBW[(1, 1, 1, 2)]*PBW[(1, 2, 2, 2)],
|
|
488
|
+
PBW[(1, 1, 2, 2)]^2, PBW[(1, 1, 2, 2)]*PBW[(1, 2, 2, 2)], PBW[(1, 2, 2, 2)]^2]
|
|
489
|
+
sage: all(v * g == g * v for g in U.algebra_generators() for v in elts)
|
|
490
|
+
True
|
|
491
|
+
|
|
492
|
+
Using the Engel Lie algebra::
|
|
493
|
+
|
|
494
|
+
sage: L.<X,Y,Z> = LieAlgebra(QQ, {('X','Y'): {'Z': 1}}, nilpotent=True)
|
|
495
|
+
sage: U = L.pbw_basis()
|
|
496
|
+
sage: Z = U.center()
|
|
497
|
+
sage: it = iter(Z.basis())
|
|
498
|
+
sage: center_elts = [next(it) for _ in range(6)]; center_elts
|
|
499
|
+
[1, Z[0], Z[0]^2, Z[0]^3, Z[0]^4, Z[0]^5]
|
|
500
|
+
sage: elts = [U(v) for v in center_elts]; elts
|
|
501
|
+
[1, PBW['Z'], PBW['Z']^2, PBW['Z']^3, PBW['Z']^4, PBW['Z']^5]
|
|
502
|
+
sage: all(v * g == g * v for g in U.algebra_generators() for v in elts)
|
|
503
|
+
True
|
|
504
|
+
"""
|
|
505
|
+
def __init__(self, g, UEA):
|
|
506
|
+
r"""
|
|
507
|
+
Initialize ``self``.
|
|
508
|
+
|
|
509
|
+
EXAMPLES::
|
|
510
|
+
|
|
511
|
+
sage: g = LieAlgebra(ZZ['t'].fraction_field(), cartan_type=['D', 4])
|
|
512
|
+
sage: U = g.pbw_basis()
|
|
513
|
+
sage: Z = U.center()
|
|
514
|
+
sage: TestSuite(Z).run()
|
|
515
|
+
|
|
516
|
+
sage: g = lie_algebras.Heisenberg(GF(3), 4)
|
|
517
|
+
sage: U = g.pbw_basis()
|
|
518
|
+
sage: Z = U.center()
|
|
519
|
+
sage: TestSuite(Z).run()
|
|
520
|
+
"""
|
|
521
|
+
if g not in FiniteDimensionalLieAlgebrasWithBasis:
|
|
522
|
+
raise NotImplementedError("only implemented for finite dimensional Lie algebras with a distinguished basis")
|
|
523
|
+
|
|
524
|
+
R = UEA.base_ring()
|
|
525
|
+
if R not in Fields():
|
|
526
|
+
raise NotImplementedError("only implemented for the base ring a field")
|
|
527
|
+
|
|
528
|
+
self._g = g
|
|
529
|
+
self._envelop_alg = UEA
|
|
530
|
+
if (self._g in KacMoodyAlgebras
|
|
531
|
+
and self._g.cartan_type().is_finite()
|
|
532
|
+
and R.characteristic() == 0):
|
|
533
|
+
indices = SimpleLieCenterIndices(self)
|
|
534
|
+
else:
|
|
535
|
+
indices = CenterIndices(self)
|
|
536
|
+
category = UEA.category()
|
|
537
|
+
base = category.base()
|
|
538
|
+
category = GradedAlgebrasWithBasis(base).Commutative() | category.Subobjects()
|
|
539
|
+
CombinatorialFreeModule.__init__(self, R, indices, category=category,
|
|
540
|
+
prefix='', bracket=False, latex_bracket=False,
|
|
541
|
+
sorting_key=self._sorting_key)
|
|
542
|
+
self.lift.register_as_coercion()
|
|
543
|
+
|
|
544
|
+
def _repr_(self):
|
|
545
|
+
r"""
|
|
546
|
+
Return a string representation of ``self``.
|
|
547
|
+
|
|
548
|
+
EXAMPLES::
|
|
549
|
+
|
|
550
|
+
sage: g = LieAlgebra(QQ, cartan_type=['A',2])
|
|
551
|
+
sage: U = g.pbw_basis()
|
|
552
|
+
sage: U.center()
|
|
553
|
+
Center of Universal enveloping algebra of Lie algebra of ['A', 2]
|
|
554
|
+
in the Chevalley basis in the Poincare-Birkhoff-Witt basis
|
|
555
|
+
"""
|
|
556
|
+
return "Center of " + repr(self._envelop_alg)
|
|
557
|
+
|
|
558
|
+
def _latex_(self):
|
|
559
|
+
r"""
|
|
560
|
+
Return a latex representation of ``self``.
|
|
561
|
+
|
|
562
|
+
EXAMPLES::
|
|
563
|
+
|
|
564
|
+
sage: g = lie_algebras.pwitt(GF(5), 5)
|
|
565
|
+
sage: U = g.pbw_basis()
|
|
566
|
+
sage: Z = U.center()
|
|
567
|
+
sage: latex(Z)
|
|
568
|
+
Z\left( PBW\left( \mathcal{W}(5)_{\Bold{F}_{5}} \right) \right)
|
|
569
|
+
"""
|
|
570
|
+
from sage.misc.latex import latex
|
|
571
|
+
return r"Z\left( {} \right)".format(latex(self._envelop_alg))
|
|
572
|
+
|
|
573
|
+
def _sorting_key(self, m):
|
|
574
|
+
r"""
|
|
575
|
+
Return a key for ``m`` used in sorting elements of ``self``.
|
|
576
|
+
|
|
577
|
+
EXAMPLES::
|
|
578
|
+
|
|
579
|
+
sage: g = LieAlgebra(QQ, cartan_type=['A', 2])
|
|
580
|
+
sage: U = g.pbw_basis()
|
|
581
|
+
sage: Z = U.center()
|
|
582
|
+
sage: z0, z1 = Z.algebra_generators()
|
|
583
|
+
sage: z0 * z1 # indirect doctest
|
|
584
|
+
Z[0]*Z[1]
|
|
585
|
+
sage: z1^2 + z0*z1 + z0^2 # indirect doctest
|
|
586
|
+
Z[0]^2 + Z[0]*Z[1] + Z[1]^2
|
|
587
|
+
sage: z1^3 + z0*z1^2 + z0^2*z1 + z0^3 # indirect doctest
|
|
588
|
+
Z[0]^3 + Z[0]^2*Z[1] + Z[0]*Z[1]^2 + Z[1]^3
|
|
589
|
+
"""
|
|
590
|
+
return (-m.length(), m.to_word_list())
|
|
591
|
+
|
|
592
|
+
@cached_method
|
|
593
|
+
def algebra_generators(self):
|
|
594
|
+
r"""
|
|
595
|
+
Return the algebra generators of ``self``.
|
|
596
|
+
|
|
597
|
+
.. WARNING::
|
|
598
|
+
|
|
599
|
+
When the universal enveloping algebra is not known to have
|
|
600
|
+
a finite generating set, the generating set will be the basis
|
|
601
|
+
of ``self`` in a degree (weakly) increasing order indexed by
|
|
602
|
+
`\ZZ_{\geq 0}`. In particular, the `0`-th generator will be
|
|
603
|
+
the multiplicative identity `1`.
|
|
604
|
+
|
|
605
|
+
EXAMPLES::
|
|
606
|
+
|
|
607
|
+
sage: g = lie_algebras.Heisenberg(QQ, 3)
|
|
608
|
+
sage: U = g.pbw_basis()
|
|
609
|
+
sage: Z = U.center()
|
|
610
|
+
sage: Z.algebra_generators()[0]
|
|
611
|
+
1
|
|
612
|
+
sage: Z.algebra_generators()[1]
|
|
613
|
+
Z[0]
|
|
614
|
+
|
|
615
|
+
sage: g = LieAlgebra(QQ, cartan_type=['G', 2])
|
|
616
|
+
sage: U = g.pbw_basis()
|
|
617
|
+
sage: Z = U.center()
|
|
618
|
+
sage: Z.algebra_generators()
|
|
619
|
+
Finite family {0: Z[0], 1: Z[1]}
|
|
620
|
+
"""
|
|
621
|
+
mon_gens = self._indices.monoid_generators()
|
|
622
|
+
if mon_gens.cardinality() == float("inf"):
|
|
623
|
+
return Family(NonNegativeIntegers(), lambda m: self.monomial(self._indices.unrank(m)))
|
|
624
|
+
return Family({i: self.monomial(mon_gens[i]) for i in mon_gens.keys()})
|
|
625
|
+
|
|
626
|
+
@cached_method
|
|
627
|
+
def one_basis(self):
|
|
628
|
+
r"""
|
|
629
|
+
Return the basis index of `1` in ``self``.
|
|
630
|
+
|
|
631
|
+
EXAMPLES::
|
|
632
|
+
|
|
633
|
+
sage: g = LieAlgebra(QQ['t'].fraction_field(), cartan_type=['B', 5])
|
|
634
|
+
sage: U = g.pbw_basis()
|
|
635
|
+
sage: Z = U.center()
|
|
636
|
+
sage: ob = Z.one_basis(); ob
|
|
637
|
+
1
|
|
638
|
+
sage: ob.parent() is Z.indices()
|
|
639
|
+
True
|
|
640
|
+
"""
|
|
641
|
+
return self._indices.one()
|
|
642
|
+
|
|
643
|
+
def ambient(self):
|
|
644
|
+
r"""
|
|
645
|
+
Return the ambient algebra of ``self``.
|
|
646
|
+
|
|
647
|
+
EXAMPLES::
|
|
648
|
+
|
|
649
|
+
sage: g = LieAlgebra(GF(5), cartan_type=['A', 2])
|
|
650
|
+
sage: U = g.pbw_basis()
|
|
651
|
+
sage: Z = U.center()
|
|
652
|
+
sage: Z.ambient() is U
|
|
653
|
+
True
|
|
654
|
+
"""
|
|
655
|
+
return self._envelop_alg
|
|
656
|
+
|
|
657
|
+
def product_on_basis(self, left, right):
|
|
658
|
+
r"""
|
|
659
|
+
Return the product of basis elements indexed by ``left`` and ``right``.
|
|
660
|
+
|
|
661
|
+
EXAMPLES::
|
|
662
|
+
|
|
663
|
+
sage: g = LieAlgebra(QQ, cartan_type=['E', 6])
|
|
664
|
+
sage: U = g.pbw_basis()
|
|
665
|
+
sage: Z = U.center()
|
|
666
|
+
sage: mg = Z.indices().monoid_generators()
|
|
667
|
+
sage: Z.product_on_basis(mg[1]*mg[2], mg[0]*mg[1]^3*mg[2]*mg[3]^3)
|
|
668
|
+
Z[0]*Z[1]^4*Z[2]^2*Z[3]^3
|
|
669
|
+
"""
|
|
670
|
+
return self.monomial(left * right)
|
|
671
|
+
|
|
672
|
+
def degree_on_basis(self, m):
|
|
673
|
+
r"""
|
|
674
|
+
Return the degree of the basis element indexed by ``m`` in ``self``.
|
|
675
|
+
|
|
676
|
+
EXAMPLES::
|
|
677
|
+
|
|
678
|
+
sage: g = LieAlgebra(QQ, cartan_type=['E', 6])
|
|
679
|
+
sage: U = g.pbw_basis()
|
|
680
|
+
sage: Z = U.center()
|
|
681
|
+
sage: I = Z.indices()
|
|
682
|
+
sage: it = iter(I)
|
|
683
|
+
sage: supports = [next(it) for _ in range(10)]; supports
|
|
684
|
+
[1, Z[0], Z[0]^2, Z[1], Z[2], Z[0]^3, Z[0]*Z[1], Z[3], Z[0]*Z[2], Z[0]^4]
|
|
685
|
+
sage: [Z.degree_on_basis(m) for m in supports]
|
|
686
|
+
[0, 2, 4, 5, 6, 6, 7, 8, 8, 8]
|
|
687
|
+
"""
|
|
688
|
+
return self._indices.degree(m)
|
|
689
|
+
|
|
690
|
+
@lazy_attribute
|
|
691
|
+
def lift(self):
|
|
692
|
+
r"""
|
|
693
|
+
The lift map from ``self`` to the universal enveloping algebra.
|
|
694
|
+
|
|
695
|
+
EXAMPLES::
|
|
696
|
+
|
|
697
|
+
sage: g = LieAlgebra(QQ, cartan_type=['A', 1])
|
|
698
|
+
sage: U = g.pbw_basis()
|
|
699
|
+
sage: Z = U.center()
|
|
700
|
+
sage: gens = Z.algebra_generators()
|
|
701
|
+
sage: U(gens[0]^2 + gens[0])
|
|
702
|
+
4*PBW[alpha[1]]^2*PBW[-alpha[1]]^2
|
|
703
|
+
+ 2*PBW[alpha[1]]*PBW[alphacheck[1]]^2*PBW[-alpha[1]]
|
|
704
|
+
+ 1/4*PBW[alphacheck[1]]^4 - PBW[alphacheck[1]]^3
|
|
705
|
+
- 2*PBW[alpha[1]]*PBW[-alpha[1]] + 1/2*PBW[alphacheck[1]]^2
|
|
706
|
+
+ PBW[alphacheck[1]]
|
|
707
|
+
sage: U(-1/4*gens[0]) == U.casimir_element()
|
|
708
|
+
True
|
|
709
|
+
"""
|
|
710
|
+
# This is correct if we are using key=self._envelop_alg._monomial_key,
|
|
711
|
+
# but we are currently unable to pass such an option.
|
|
712
|
+
return self.module_morphism(self._indices.lift_on_basis, codomain=self._envelop_alg, unitriangular='upper')
|
|
713
|
+
|
|
714
|
+
def retract(self, elt):
|
|
715
|
+
r"""
|
|
716
|
+
The retraction map to ``self`` from the universal enveloping algebra.
|
|
717
|
+
|
|
718
|
+
.. TODO::
|
|
719
|
+
|
|
720
|
+
Implement a version of this that checks if the leading term of
|
|
721
|
+
``elt`` is divisible by a product of all of the currently known
|
|
722
|
+
generators in order to avoid constructing the full centralizer
|
|
723
|
+
of larger degrees than needed.
|
|
724
|
+
|
|
725
|
+
EXAMPLES::
|
|
726
|
+
|
|
727
|
+
sage: g = lie_algebras.Heisenberg(QQ, 3)
|
|
728
|
+
sage: U = g.pbw_basis()
|
|
729
|
+
sage: Z = U.center()
|
|
730
|
+
sage: z0 = Z.algebra_generators()[1]; z0
|
|
731
|
+
Z[0]
|
|
732
|
+
sage: Z.retract(U(z0^2) - U(3*z0))
|
|
733
|
+
Z[0]^2 - 3*Z[0]
|
|
734
|
+
|
|
735
|
+
sage: g = LieAlgebra(QQ, cartan_type=['A', 2])
|
|
736
|
+
sage: U = g.pbw_basis()
|
|
737
|
+
sage: Z = U.center()
|
|
738
|
+
sage: z0, z1 = Z.algebra_generators()
|
|
739
|
+
sage: Z.retract(U(z0*z0) - U(z1)) # long time
|
|
740
|
+
Z[0]^2 - Z[1]
|
|
741
|
+
sage: zc = Z.retract(U.casimir_element()); zc
|
|
742
|
+
-1/3*Z[0]
|
|
743
|
+
sage: U(zc) == U.casimir_element()
|
|
744
|
+
True
|
|
745
|
+
"""
|
|
746
|
+
# This should work except it needs the monomials of the PBW basis to be
|
|
747
|
+
# comparable. However, this does not work for, e.g., Lie algebras
|
|
748
|
+
# in the Chevalley basis as ee are unable to pass a key for the
|
|
749
|
+
# module morphism. Additionally, the implementation below does more
|
|
750
|
+
# operations in-place than the module morphism.
|
|
751
|
+
#return self.lift.section()
|
|
752
|
+
UEA = self._envelop_alg
|
|
753
|
+
elt = UEA(elt)
|
|
754
|
+
# We manipulate the dictionary (in place) to avoid creating elements
|
|
755
|
+
data = elt.monomial_coefficients(copy=True)
|
|
756
|
+
indices = self._indices
|
|
757
|
+
ret = {}
|
|
758
|
+
while data:
|
|
759
|
+
lm = min(data, key=UEA._monomial_key)
|
|
760
|
+
while indices._cur_deg < UEA.degree_on_basis(lm):
|
|
761
|
+
indices._construct_next_degree()
|
|
762
|
+
ind = indices._cur_basis[lm]
|
|
763
|
+
other = indices.lift_on_basis(ind).monomial_coefficients(copy=False)
|
|
764
|
+
coeff = data[lm] / other[lm]
|
|
765
|
+
ret[ind] = coeff
|
|
766
|
+
iaxpy(-coeff, other, data)
|
|
767
|
+
return self.element_class(self, ret)
|