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,1186 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
# sage.doctest: needs sage.graphs
|
|
3
|
+
"""
|
|
4
|
+
Virasoro Algebra and Related Lie Algebras
|
|
5
|
+
|
|
6
|
+
AUTHORS:
|
|
7
|
+
|
|
8
|
+
- Travis Scrimshaw (2013-05-03): Initial version
|
|
9
|
+
"""
|
|
10
|
+
# ****************************************************************************
|
|
11
|
+
# Copyright (C) 2013-2017 Travis Scrimshaw <tcscrims at gmail.com>
|
|
12
|
+
#
|
|
13
|
+
# This program is free software: you can redistribute it and/or modify
|
|
14
|
+
# it under the terms of the GNU General Public License as published by
|
|
15
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
16
|
+
# (at your option) any later version.
|
|
17
|
+
# https://www.gnu.org/licenses/
|
|
18
|
+
# ****************************************************************************
|
|
19
|
+
|
|
20
|
+
from sage.misc.cachefunc import cached_method
|
|
21
|
+
from sage.categories.lie_algebras import LieAlgebras
|
|
22
|
+
from sage.categories.modules import Modules
|
|
23
|
+
from sage.rings.integer_ring import ZZ
|
|
24
|
+
from sage.rings.finite_rings.integer_mod_ring import IntegerModRing
|
|
25
|
+
from sage.sets.family import Family
|
|
26
|
+
from sage.sets.set import Set
|
|
27
|
+
from sage.sets.disjoint_union_enumerated_sets import DisjointUnionEnumeratedSets
|
|
28
|
+
from sage.structure.indexed_generators import IndexedGenerators
|
|
29
|
+
from sage.algebras.lie_algebras.lie_algebra_element import LieAlgebraElement
|
|
30
|
+
from sage.algebras.lie_algebras.lie_algebra import (InfinitelyGeneratedLieAlgebra,
|
|
31
|
+
FinitelyGeneratedLieAlgebra)
|
|
32
|
+
from sage.combinat.free_module import CombinatorialFreeModule
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class LieAlgebraRegularVectorFields(InfinitelyGeneratedLieAlgebra, IndexedGenerators):
|
|
36
|
+
r"""
|
|
37
|
+
The Lie algebra of regular vector fields on `\CC^{\times}`.
|
|
38
|
+
|
|
39
|
+
This is the Lie algebra with basis `\{d_i\}_{i \in \ZZ}` and subject
|
|
40
|
+
to the relations
|
|
41
|
+
|
|
42
|
+
.. MATH::
|
|
43
|
+
|
|
44
|
+
[d_i, d_j] = (i - j) d_{i+j}.
|
|
45
|
+
|
|
46
|
+
This is also known as the Witt (Lie) algebra.
|
|
47
|
+
|
|
48
|
+
.. NOTE::
|
|
49
|
+
|
|
50
|
+
This differs from some conventions (e.g., [Ka1990]_), where
|
|
51
|
+
we have `d'_i \mapsto -d_i`.
|
|
52
|
+
|
|
53
|
+
REFERENCES:
|
|
54
|
+
|
|
55
|
+
- :wikipedia:`Witt_algebra`
|
|
56
|
+
|
|
57
|
+
.. SEEALSO::
|
|
58
|
+
|
|
59
|
+
:class:`WittLieAlgebra_charp`
|
|
60
|
+
"""
|
|
61
|
+
def __init__(self, R):
|
|
62
|
+
"""
|
|
63
|
+
Initialize ``self``.
|
|
64
|
+
|
|
65
|
+
EXAMPLES::
|
|
66
|
+
|
|
67
|
+
sage: L = lie_algebras.regular_vector_fields(QQ)
|
|
68
|
+
sage: TestSuite(L).run()
|
|
69
|
+
"""
|
|
70
|
+
cat = LieAlgebras(R).WithBasis().Graded()
|
|
71
|
+
InfinitelyGeneratedLieAlgebra.__init__(self, R, index_set=ZZ, category=cat)
|
|
72
|
+
IndexedGenerators.__init__(self, ZZ, prefix='d', bracket='[')
|
|
73
|
+
|
|
74
|
+
def _repr_(self):
|
|
75
|
+
"""
|
|
76
|
+
Return a string representation of ``self``.
|
|
77
|
+
|
|
78
|
+
EXAMPLES::
|
|
79
|
+
|
|
80
|
+
sage: lie_algebras.regular_vector_fields(QQ)
|
|
81
|
+
The Lie algebra of regular vector fields over Rational Field
|
|
82
|
+
"""
|
|
83
|
+
return "The Lie algebra of regular vector fields over {}".format(self.base_ring())
|
|
84
|
+
|
|
85
|
+
def _latex_(self):
|
|
86
|
+
r"""
|
|
87
|
+
Return a latex representation of ``self``.
|
|
88
|
+
|
|
89
|
+
EXAMPLES::
|
|
90
|
+
|
|
91
|
+
sage: g = lie_algebras.regular_vector_fields(QQ)
|
|
92
|
+
sage: latex(g)
|
|
93
|
+
\mathcal{W}_{\Bold{Q}}
|
|
94
|
+
"""
|
|
95
|
+
from sage.misc.latex import latex
|
|
96
|
+
return r"\mathcal{{W}}_{{{}}}".format(latex(self.base_ring()))
|
|
97
|
+
|
|
98
|
+
# For compatibility with CombinatorialFreeModuleElement
|
|
99
|
+
_repr_term = IndexedGenerators._repr_generator
|
|
100
|
+
_latex_term = IndexedGenerators._latex_generator
|
|
101
|
+
|
|
102
|
+
@cached_method
|
|
103
|
+
def lie_algebra_generators(self):
|
|
104
|
+
"""
|
|
105
|
+
Return the generators of ``self`` as a Lie algebra.
|
|
106
|
+
|
|
107
|
+
EXAMPLES::
|
|
108
|
+
|
|
109
|
+
sage: L = lie_algebras.regular_vector_fields(QQ)
|
|
110
|
+
sage: L.lie_algebra_generators()
|
|
111
|
+
Lazy family (generator map(i))_{i in Integer Ring}
|
|
112
|
+
"""
|
|
113
|
+
return Family(self._indices, self.monomial, name='generator map')
|
|
114
|
+
|
|
115
|
+
def bracket_on_basis(self, i, j):
|
|
116
|
+
"""
|
|
117
|
+
Return the bracket of basis elements indexed by ``x`` and ``y``
|
|
118
|
+
where ``x < y``.
|
|
119
|
+
|
|
120
|
+
(This particular implementation actually does not require
|
|
121
|
+
``x < y``.)
|
|
122
|
+
|
|
123
|
+
EXAMPLES::
|
|
124
|
+
|
|
125
|
+
sage: L = lie_algebras.regular_vector_fields(QQ)
|
|
126
|
+
sage: L.bracket_on_basis(2, -2)
|
|
127
|
+
4*d[0]
|
|
128
|
+
sage: L.bracket_on_basis(2, 4)
|
|
129
|
+
-2*d[6]
|
|
130
|
+
sage: L.bracket_on_basis(4, 4)
|
|
131
|
+
0
|
|
132
|
+
"""
|
|
133
|
+
return self.term(i + j, i - j)
|
|
134
|
+
|
|
135
|
+
def degree_on_basis(self, i):
|
|
136
|
+
r"""
|
|
137
|
+
Return the degree of the basis element indexed by ``i``,
|
|
138
|
+
which is ``i``.
|
|
139
|
+
|
|
140
|
+
EXAMPLES::
|
|
141
|
+
|
|
142
|
+
sage: L = lie_algebras.regular_vector_fields(QQ)
|
|
143
|
+
sage: L.degree_on_basis(2)
|
|
144
|
+
2
|
|
145
|
+
"""
|
|
146
|
+
return i
|
|
147
|
+
|
|
148
|
+
def _an_element_(self):
|
|
149
|
+
"""
|
|
150
|
+
Return an element of ``self``.
|
|
151
|
+
|
|
152
|
+
EXAMPLES::
|
|
153
|
+
|
|
154
|
+
sage: L = lie_algebras.regular_vector_fields(QQ)
|
|
155
|
+
sage: L.an_element()
|
|
156
|
+
d[-1] + d[0] - 3*d[1]
|
|
157
|
+
"""
|
|
158
|
+
return self.monomial(0) - 3*self.monomial(1) + self.monomial(-1)
|
|
159
|
+
|
|
160
|
+
def some_elements(self):
|
|
161
|
+
"""
|
|
162
|
+
Return some elements of ``self``.
|
|
163
|
+
|
|
164
|
+
EXAMPLES::
|
|
165
|
+
|
|
166
|
+
sage: L = lie_algebras.regular_vector_fields(QQ)
|
|
167
|
+
sage: L.some_elements()
|
|
168
|
+
[d[0], d[2], d[-2], d[-1] + d[0] - 3*d[1]]
|
|
169
|
+
"""
|
|
170
|
+
return [self.monomial(0), self.monomial(2), self.monomial(-2), self.an_element()]
|
|
171
|
+
|
|
172
|
+
class Element(LieAlgebraElement):
|
|
173
|
+
pass
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
class WittLieAlgebra_charp(FinitelyGeneratedLieAlgebra, IndexedGenerators):
|
|
177
|
+
r"""
|
|
178
|
+
The `p`-Witt Lie algebra over a ring `R` in which
|
|
179
|
+
`p \cdot 1_R = 0`.
|
|
180
|
+
|
|
181
|
+
Let `R` be a ring and `p` be a positive integer such that
|
|
182
|
+
`p \cdot 1_R = 0`. The `p`-Witt Lie algebra over `R` is
|
|
183
|
+
the Lie algebra with basis `\{d_0, d_1, \ldots, d_{p-1}\}`
|
|
184
|
+
and subject to the relations
|
|
185
|
+
|
|
186
|
+
.. MATH::
|
|
187
|
+
|
|
188
|
+
[d_i, d_j] = (i - j) d_{i+j},
|
|
189
|
+
|
|
190
|
+
where the `i+j` on the right hand side is identified with its
|
|
191
|
+
remainder modulo `p`.
|
|
192
|
+
|
|
193
|
+
.. SEEALSO::
|
|
194
|
+
|
|
195
|
+
:class:`LieAlgebraRegularVectorFields`
|
|
196
|
+
"""
|
|
197
|
+
def __init__(self, R, p):
|
|
198
|
+
"""
|
|
199
|
+
Initialize ``self``.
|
|
200
|
+
|
|
201
|
+
EXAMPLES::
|
|
202
|
+
|
|
203
|
+
sage: L = lie_algebras.pwitt(GF(5), 5); L
|
|
204
|
+
The 5-Witt Lie algebra over Finite Field of size 5
|
|
205
|
+
sage: TestSuite(L).run()
|
|
206
|
+
|
|
207
|
+
We skip the grading test as we need to be able to echelonize a
|
|
208
|
+
matrix over the base ring as part of the test::
|
|
209
|
+
|
|
210
|
+
sage: L = lie_algebras.pwitt(Zmod(6), 6)
|
|
211
|
+
sage: TestSuite(L).run(skip='_test_grading')
|
|
212
|
+
"""
|
|
213
|
+
if R(p) != 0:
|
|
214
|
+
raise ValueError("{} is not 0 in {}".format(p, R))
|
|
215
|
+
cat = LieAlgebras(R).FiniteDimensional().WithBasis().Graded()
|
|
216
|
+
FinitelyGeneratedLieAlgebra.__init__(self, R, index_set=list(range(p)),
|
|
217
|
+
category=cat)
|
|
218
|
+
IndexedGenerators.__init__(self, list(range(p)), prefix='d',
|
|
219
|
+
bracket='[')
|
|
220
|
+
self._p = p
|
|
221
|
+
|
|
222
|
+
def _repr_(self):
|
|
223
|
+
"""
|
|
224
|
+
Return a string representation of ``self``.
|
|
225
|
+
|
|
226
|
+
EXAMPLES::
|
|
227
|
+
|
|
228
|
+
sage: lie_algebras.pwitt(Zmod(5), 5)
|
|
229
|
+
The 5-Witt Lie algebra over Ring of integers modulo 5
|
|
230
|
+
sage: lie_algebras.pwitt(Zmod(5), 15)
|
|
231
|
+
The 15-Witt Lie algebra over Ring of integers modulo 5
|
|
232
|
+
"""
|
|
233
|
+
return "The {}-Witt Lie algebra over {}".format(self._p, self.base_ring())
|
|
234
|
+
|
|
235
|
+
def _latex_(self):
|
|
236
|
+
r"""
|
|
237
|
+
Return a latex representation of ``self``.
|
|
238
|
+
|
|
239
|
+
EXAMPLES::
|
|
240
|
+
|
|
241
|
+
sage: g = lie_algebras.pwitt(GF(3), 15)
|
|
242
|
+
sage: latex(g)
|
|
243
|
+
\mathcal{W}(15)_{\Bold{F}_{3}}
|
|
244
|
+
"""
|
|
245
|
+
from sage.misc.latex import latex
|
|
246
|
+
return r"\mathcal{{W}}({})_{{{}}}".format(latex(self._p), latex(self.base_ring()))
|
|
247
|
+
|
|
248
|
+
# For compatibility with CombinatorialFreeModuleElement
|
|
249
|
+
_repr_term = IndexedGenerators._repr_generator
|
|
250
|
+
_latex_term = IndexedGenerators._latex_generator
|
|
251
|
+
|
|
252
|
+
@cached_method
|
|
253
|
+
def lie_algebra_generators(self):
|
|
254
|
+
"""
|
|
255
|
+
Return the generators of ``self`` as a Lie algebra.
|
|
256
|
+
|
|
257
|
+
EXAMPLES::
|
|
258
|
+
|
|
259
|
+
sage: L = lie_algebras.pwitt(Zmod(5), 5)
|
|
260
|
+
sage: L.lie_algebra_generators()
|
|
261
|
+
Finite family {0: d[0], 1: d[1], 2: d[2], 3: d[3], 4: d[4]}
|
|
262
|
+
"""
|
|
263
|
+
return Family(self._indices, self.monomial, name='generator map')
|
|
264
|
+
|
|
265
|
+
def bracket_on_basis(self, i, j):
|
|
266
|
+
"""
|
|
267
|
+
Return the bracket of basis elements indexed by ``x`` and ``y``
|
|
268
|
+
where ``x < y``.
|
|
269
|
+
|
|
270
|
+
(This particular implementation actually does not require
|
|
271
|
+
``x < y``.)
|
|
272
|
+
|
|
273
|
+
EXAMPLES::
|
|
274
|
+
|
|
275
|
+
sage: L = lie_algebras.pwitt(Zmod(5), 5)
|
|
276
|
+
sage: L.bracket_on_basis(2, 3)
|
|
277
|
+
4*d[0]
|
|
278
|
+
sage: L.bracket_on_basis(3, 2)
|
|
279
|
+
d[0]
|
|
280
|
+
sage: L.bracket_on_basis(2, 2)
|
|
281
|
+
0
|
|
282
|
+
sage: L.bracket_on_basis(1, 3)
|
|
283
|
+
3*d[4]
|
|
284
|
+
"""
|
|
285
|
+
return self.term((i + j) % self._p, i - j)
|
|
286
|
+
|
|
287
|
+
def _an_element_(self):
|
|
288
|
+
"""
|
|
289
|
+
Return an element of ``self``.
|
|
290
|
+
|
|
291
|
+
EXAMPLES::
|
|
292
|
+
|
|
293
|
+
sage: L = lie_algebras.pwitt(Zmod(5), 5)
|
|
294
|
+
sage: L.an_element()
|
|
295
|
+
d[0] + 2*d[1] + d[4]
|
|
296
|
+
"""
|
|
297
|
+
return self.monomial(0) - 3*self.monomial(1 % self._p) + self.monomial((-1) % self._p)
|
|
298
|
+
|
|
299
|
+
def some_elements(self):
|
|
300
|
+
"""
|
|
301
|
+
Return some elements of ``self``.
|
|
302
|
+
|
|
303
|
+
EXAMPLES::
|
|
304
|
+
|
|
305
|
+
sage: L = lie_algebras.pwitt(Zmod(5), 5)
|
|
306
|
+
sage: L.some_elements()
|
|
307
|
+
[d[0], d[2], d[3], d[0] + 2*d[1] + d[4]]
|
|
308
|
+
"""
|
|
309
|
+
return [self.monomial(0), self.monomial(2 % self._p),
|
|
310
|
+
self.monomial((-2) % self._p),
|
|
311
|
+
self.an_element()]
|
|
312
|
+
|
|
313
|
+
def degree_on_basis(self, i):
|
|
314
|
+
r"""
|
|
315
|
+
Return the degree of the basis element indexed by ``i``,
|
|
316
|
+
which is ``i`` mod `p`.
|
|
317
|
+
|
|
318
|
+
EXAMPLES::
|
|
319
|
+
|
|
320
|
+
sage: L = lie_algebras.pwitt(Zmod(5), 5)
|
|
321
|
+
sage: L.degree_on_basis(7)
|
|
322
|
+
2
|
|
323
|
+
sage: L.degree_on_basis(2).parent()
|
|
324
|
+
Ring of integers modulo 5
|
|
325
|
+
"""
|
|
326
|
+
return IntegerModRing(self._p)(i)
|
|
327
|
+
|
|
328
|
+
class Element(LieAlgebraElement):
|
|
329
|
+
pass
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
def _basis_key(x):
|
|
333
|
+
"""
|
|
334
|
+
Helper function that generates a key for the basis elements
|
|
335
|
+
of the Virasoro algebra.
|
|
336
|
+
|
|
337
|
+
EXAMPLES::
|
|
338
|
+
|
|
339
|
+
sage: from sage.algebras.lie_algebras.virasoro import _basis_key
|
|
340
|
+
sage: _basis_key('c')
|
|
341
|
+
+Infinity
|
|
342
|
+
sage: _basis_key(2)
|
|
343
|
+
2
|
|
344
|
+
"""
|
|
345
|
+
if x == 'c':
|
|
346
|
+
from sage.rings.infinity import infinity
|
|
347
|
+
return infinity
|
|
348
|
+
return x
|
|
349
|
+
|
|
350
|
+
|
|
351
|
+
class VirasoroAlgebra(InfinitelyGeneratedLieAlgebra, IndexedGenerators):
|
|
352
|
+
r"""
|
|
353
|
+
The Virasoro algebra.
|
|
354
|
+
|
|
355
|
+
This is the Lie algebra with basis `\{d_i\}_{i \in \ZZ} \cup \{c\}`
|
|
356
|
+
and subject to the relations
|
|
357
|
+
|
|
358
|
+
.. MATH::
|
|
359
|
+
|
|
360
|
+
[d_i, d_j] = (i - j) d_{i+j} + \frac{1}{12}(i^3 - i) \delta_{i,-j} c
|
|
361
|
+
|
|
362
|
+
and
|
|
363
|
+
|
|
364
|
+
.. MATH::
|
|
365
|
+
|
|
366
|
+
[d_i, c] = 0.
|
|
367
|
+
|
|
368
|
+
(Here, it is assumed that the base ring `R` has `2` invertible.)
|
|
369
|
+
|
|
370
|
+
This is the universal central extension `\widetilde{\mathfrak{d}}` of
|
|
371
|
+
the Lie algebra `\mathfrak{d}` of
|
|
372
|
+
:class:`regular vector fields <LieAlgebraRegularVectorFields>`
|
|
373
|
+
on `\CC^{\times}`.
|
|
374
|
+
|
|
375
|
+
EXAMPLES::
|
|
376
|
+
|
|
377
|
+
sage: d = lie_algebras.VirasoroAlgebra(QQ)
|
|
378
|
+
|
|
379
|
+
REFERENCES:
|
|
380
|
+
|
|
381
|
+
- :wikipedia:`Virasoro_algebra`
|
|
382
|
+
"""
|
|
383
|
+
def __init__(self, R):
|
|
384
|
+
"""
|
|
385
|
+
Initialize ``self``.
|
|
386
|
+
|
|
387
|
+
EXAMPLES::
|
|
388
|
+
|
|
389
|
+
sage: d = lie_algebras.VirasoroAlgebra(QQ)
|
|
390
|
+
sage: TestSuite(d).run()
|
|
391
|
+
"""
|
|
392
|
+
cat = LieAlgebras(R).WithBasis().Graded()
|
|
393
|
+
InfinitelyGeneratedLieAlgebra.__init__(self, R, index_set=ZZ, category=cat)
|
|
394
|
+
IndexedGenerators.__init__(self, ZZ, prefix='d', bracket='[',
|
|
395
|
+
sorting_key=_basis_key)
|
|
396
|
+
|
|
397
|
+
def _basis_key(self, m):
|
|
398
|
+
"""
|
|
399
|
+
Return a key for sorting for the index ``m``.
|
|
400
|
+
|
|
401
|
+
TESTS::
|
|
402
|
+
|
|
403
|
+
sage: d = lie_algebras.VirasoroAlgebra(QQ)
|
|
404
|
+
sage: d._basis_key(3)
|
|
405
|
+
3
|
|
406
|
+
sage: d._basis_key('c')
|
|
407
|
+
+Infinity
|
|
408
|
+
sage: d._basis_key(4) < d._basis_key('c')
|
|
409
|
+
True
|
|
410
|
+
"""
|
|
411
|
+
return _basis_key(m)
|
|
412
|
+
|
|
413
|
+
def _repr_term(self, m):
|
|
414
|
+
"""
|
|
415
|
+
Return a string representation of the term indexed by ``m``.
|
|
416
|
+
|
|
417
|
+
EXAMPLES::
|
|
418
|
+
|
|
419
|
+
sage: d = lie_algebras.VirasoroAlgebra(QQ)
|
|
420
|
+
sage: d._repr_term('c')
|
|
421
|
+
'c'
|
|
422
|
+
sage: d._repr_term(2)
|
|
423
|
+
'd[2]'
|
|
424
|
+
"""
|
|
425
|
+
if isinstance(m, str):
|
|
426
|
+
return m
|
|
427
|
+
return IndexedGenerators._repr_generator(self, m)
|
|
428
|
+
|
|
429
|
+
def _latex_term(self, m):
|
|
430
|
+
r"""
|
|
431
|
+
Return a `\LaTeX` representation of the term indexed by ``m``.
|
|
432
|
+
|
|
433
|
+
EXAMPLES::
|
|
434
|
+
|
|
435
|
+
sage: d = lie_algebras.VirasoroAlgebra(QQ)
|
|
436
|
+
sage: d._latex_term('c')
|
|
437
|
+
'c'
|
|
438
|
+
sage: d._latex_term(2)
|
|
439
|
+
'd_{2}'
|
|
440
|
+
sage: d._latex_term(-13)
|
|
441
|
+
'd_{-13}'
|
|
442
|
+
"""
|
|
443
|
+
if isinstance(m, str):
|
|
444
|
+
return m
|
|
445
|
+
return IndexedGenerators._latex_generator(self, m)
|
|
446
|
+
|
|
447
|
+
def _unicode_art_term(self, m):
|
|
448
|
+
r"""
|
|
449
|
+
Return a unicode art representation of the term indexed by ``m``.
|
|
450
|
+
|
|
451
|
+
EXAMPLES::
|
|
452
|
+
|
|
453
|
+
sage: d = lie_algebras.VirasoroAlgebra(QQ)
|
|
454
|
+
sage: d._unicode_art_term('c')
|
|
455
|
+
c
|
|
456
|
+
sage: d._unicode_art_term(2)
|
|
457
|
+
d₂
|
|
458
|
+
sage: d._unicode_art_term(-13)
|
|
459
|
+
d₋₁₃
|
|
460
|
+
"""
|
|
461
|
+
from sage.typeset.unicode_art import unicode_art, unicode_subscript
|
|
462
|
+
if isinstance(m, str):
|
|
463
|
+
return unicode_art(m)
|
|
464
|
+
return unicode_art('d' + unicode_subscript(m))
|
|
465
|
+
|
|
466
|
+
def _repr_(self):
|
|
467
|
+
"""
|
|
468
|
+
Return a string representation of ``self``.
|
|
469
|
+
|
|
470
|
+
EXAMPLES::
|
|
471
|
+
|
|
472
|
+
sage: lie_algebras.VirasoroAlgebra(QQ)
|
|
473
|
+
The Virasoro algebra over Rational Field
|
|
474
|
+
"""
|
|
475
|
+
return "The Virasoro algebra over {}".format(self.base_ring())
|
|
476
|
+
|
|
477
|
+
def _latex_(self):
|
|
478
|
+
r"""
|
|
479
|
+
Return a latex representation of ``self``.
|
|
480
|
+
|
|
481
|
+
EXAMPLES::
|
|
482
|
+
|
|
483
|
+
sage: g = lie_algebras.VirasoroAlgebra(QQ)
|
|
484
|
+
sage: latex(g)
|
|
485
|
+
\mathcal{V}_{\Bold{Q}}
|
|
486
|
+
"""
|
|
487
|
+
from sage.misc.latex import latex
|
|
488
|
+
return r"\mathcal{{V}}_{{{}}}".format(latex(self.base_ring()))
|
|
489
|
+
|
|
490
|
+
@cached_method
|
|
491
|
+
def lie_algebra_generators(self):
|
|
492
|
+
"""
|
|
493
|
+
Return the generators of ``self`` as a Lie algebra.
|
|
494
|
+
|
|
495
|
+
EXAMPLES::
|
|
496
|
+
|
|
497
|
+
sage: d = lie_algebras.VirasoroAlgebra(QQ)
|
|
498
|
+
sage: d.lie_algebra_generators()
|
|
499
|
+
Lazy family (generator map(i))_{i in Integer Ring}
|
|
500
|
+
"""
|
|
501
|
+
return Family(self._indices, self.monomial, name='generator map')
|
|
502
|
+
|
|
503
|
+
@cached_method
|
|
504
|
+
def basis(self):
|
|
505
|
+
"""
|
|
506
|
+
Return a basis of ``self``.
|
|
507
|
+
|
|
508
|
+
EXAMPLES::
|
|
509
|
+
|
|
510
|
+
sage: d = lie_algebras.VirasoroAlgebra(QQ)
|
|
511
|
+
sage: B = d.basis(); B
|
|
512
|
+
Lazy family (basis map(i))_{i in Disjoint union of
|
|
513
|
+
Family ({'c'}, Integer Ring)}
|
|
514
|
+
sage: B['c']
|
|
515
|
+
c
|
|
516
|
+
sage: B[3]
|
|
517
|
+
d[3]
|
|
518
|
+
sage: B[-15]
|
|
519
|
+
d[-15]
|
|
520
|
+
"""
|
|
521
|
+
I = DisjointUnionEnumeratedSets([Set(['c']), ZZ])
|
|
522
|
+
return Family(I, self.monomial, name='basis map')
|
|
523
|
+
|
|
524
|
+
def d(self, i):
|
|
525
|
+
"""
|
|
526
|
+
Return the element `d_i` in ``self``.
|
|
527
|
+
|
|
528
|
+
EXAMPLES::
|
|
529
|
+
|
|
530
|
+
sage: L = lie_algebras.VirasoroAlgebra(QQ)
|
|
531
|
+
sage: L.d(2)
|
|
532
|
+
d[2]
|
|
533
|
+
"""
|
|
534
|
+
return self.monomial(i)
|
|
535
|
+
|
|
536
|
+
def c(self):
|
|
537
|
+
"""
|
|
538
|
+
The central element `c` in ``self``.
|
|
539
|
+
|
|
540
|
+
EXAMPLES::
|
|
541
|
+
|
|
542
|
+
sage: d = lie_algebras.VirasoroAlgebra(QQ)
|
|
543
|
+
sage: d.c()
|
|
544
|
+
c
|
|
545
|
+
"""
|
|
546
|
+
return self.monomial('c')
|
|
547
|
+
|
|
548
|
+
def bracket_on_basis(self, i, j):
|
|
549
|
+
"""
|
|
550
|
+
Return the bracket of basis elements indexed by ``x`` and ``y``
|
|
551
|
+
where ``x < y``.
|
|
552
|
+
|
|
553
|
+
(This particular implementation actually does not require
|
|
554
|
+
``x < y``.)
|
|
555
|
+
|
|
556
|
+
EXAMPLES::
|
|
557
|
+
|
|
558
|
+
sage: d = lie_algebras.VirasoroAlgebra(QQ)
|
|
559
|
+
sage: d.bracket_on_basis('c', 2)
|
|
560
|
+
0
|
|
561
|
+
sage: d.bracket_on_basis(2, -2)
|
|
562
|
+
4*d[0] + 1/2*c
|
|
563
|
+
"""
|
|
564
|
+
if i == 'c' or j == 'c':
|
|
565
|
+
return self.zero()
|
|
566
|
+
ret = self._from_dict({i + j: i-j})
|
|
567
|
+
R = self.base_ring()
|
|
568
|
+
if i == -j:
|
|
569
|
+
ret += R(i ** 3 - i) / R(12) * self.c()
|
|
570
|
+
return ret
|
|
571
|
+
|
|
572
|
+
def degree_on_basis(self, i):
|
|
573
|
+
r"""
|
|
574
|
+
Return the degree of the basis element indexed by ``i``,
|
|
575
|
+
which is ``i`` and `0` for ``'c'``.
|
|
576
|
+
|
|
577
|
+
EXAMPLES::
|
|
578
|
+
|
|
579
|
+
sage: d = lie_algebras.VirasoroAlgebra(QQ)
|
|
580
|
+
sage: d.degree_on_basis(2)
|
|
581
|
+
2
|
|
582
|
+
sage: d.c().degree()
|
|
583
|
+
0
|
|
584
|
+
sage: (d.c() + d.basis()[0]).is_homogeneous()
|
|
585
|
+
True
|
|
586
|
+
"""
|
|
587
|
+
if i == 'c':
|
|
588
|
+
return ZZ.zero()
|
|
589
|
+
return i
|
|
590
|
+
|
|
591
|
+
def _an_element_(self):
|
|
592
|
+
"""
|
|
593
|
+
Return an element of ``self``.
|
|
594
|
+
|
|
595
|
+
EXAMPLES::
|
|
596
|
+
|
|
597
|
+
sage: d = lie_algebras.VirasoroAlgebra(QQ)
|
|
598
|
+
sage: d.an_element()
|
|
599
|
+
d[-1] + d[0] - 1/2*d[1] + c
|
|
600
|
+
"""
|
|
601
|
+
d = self.monomial
|
|
602
|
+
return d(0) - self.base_ring().an_element()*d(1) + d(-1) + d('c')
|
|
603
|
+
|
|
604
|
+
def some_elements(self):
|
|
605
|
+
"""
|
|
606
|
+
Return some elements of ``self``.
|
|
607
|
+
|
|
608
|
+
EXAMPLES::
|
|
609
|
+
|
|
610
|
+
sage: d = lie_algebras.VirasoroAlgebra(QQ)
|
|
611
|
+
sage: d.some_elements()
|
|
612
|
+
[d[0], d[2], d[-2], c, d[-1] + d[0] - 1/2*d[1] + c]
|
|
613
|
+
"""
|
|
614
|
+
d = self.monomial
|
|
615
|
+
return [d(0), d(2), d(-2), d('c'), self.an_element()]
|
|
616
|
+
|
|
617
|
+
def chargeless_representation(self, a, b):
|
|
618
|
+
"""
|
|
619
|
+
Return the chargeless representation of ``self`` with
|
|
620
|
+
parameters ``a`` and ``b``.
|
|
621
|
+
|
|
622
|
+
.. SEEALSO::
|
|
623
|
+
|
|
624
|
+
:class:`~sage.algebras.lie_algebras.virasoro.ChargelessRepresentation`
|
|
625
|
+
|
|
626
|
+
EXAMPLES::
|
|
627
|
+
|
|
628
|
+
sage: L = lie_algebras.VirasoroAlgebra(QQ)
|
|
629
|
+
sage: L.chargeless_representation(3, 2)
|
|
630
|
+
Chargeless representation (3, 2) of
|
|
631
|
+
The Virasoro algebra over Rational Field
|
|
632
|
+
"""
|
|
633
|
+
return ChargelessRepresentation(self, a, b)
|
|
634
|
+
|
|
635
|
+
def verma_module(self, c, h):
|
|
636
|
+
"""
|
|
637
|
+
Return the Verma module with central charge ``c`` and
|
|
638
|
+
conformal (or highest) weight ``h``.
|
|
639
|
+
|
|
640
|
+
.. SEEALSO::
|
|
641
|
+
|
|
642
|
+
:class:`~sage.algebras.lie_algebras.virasoro.VermaModule`
|
|
643
|
+
|
|
644
|
+
EXAMPLES::
|
|
645
|
+
|
|
646
|
+
sage: L = lie_algebras.VirasoroAlgebra(QQ)
|
|
647
|
+
sage: L.verma_module(3, 2)
|
|
648
|
+
Verma module with charge 3 and conformal weight 2 of
|
|
649
|
+
The Virasoro algebra over Rational Field
|
|
650
|
+
"""
|
|
651
|
+
return VermaModule(self, c, h)
|
|
652
|
+
|
|
653
|
+
class Element(LieAlgebraElement):
|
|
654
|
+
pass
|
|
655
|
+
|
|
656
|
+
#####################################################################
|
|
657
|
+
# Representations
|
|
658
|
+
|
|
659
|
+
|
|
660
|
+
class ChargelessRepresentation(CombinatorialFreeModule):
|
|
661
|
+
r"""
|
|
662
|
+
A chargeless representation of the Virasoro algebra.
|
|
663
|
+
|
|
664
|
+
Let `L` be the Virasoro algebra over the field `F` of
|
|
665
|
+
characteristic `0`. For `\alpha, \beta \in R`, we denote `V_{a,b}`
|
|
666
|
+
as the `(a, b)`-*chargeless representation* of `L`, which is the
|
|
667
|
+
`F`-span of `\{v_k \mid k \in \ZZ\}` with `L` action
|
|
668
|
+
|
|
669
|
+
.. MATH::
|
|
670
|
+
|
|
671
|
+
\begin{aligned}
|
|
672
|
+
d_n \cdot v_k & = (a n + b - k) v_{n+k},
|
|
673
|
+
\\ c \cdot v_k & = 0,
|
|
674
|
+
\end{aligned}
|
|
675
|
+
|
|
676
|
+
This comes from the action of `d_n = -t^{n+1} \frac{d}{dt}` on
|
|
677
|
+
`F[t, t^{-1}]` (recall that `L` is the central extension of the
|
|
678
|
+
:class:`algebra of derivations <LieAlgebraRegularVectorFields>`
|
|
679
|
+
of `F[t, t^{-1}]`), where
|
|
680
|
+
|
|
681
|
+
.. MATH::
|
|
682
|
+
|
|
683
|
+
V_{a,b} = F[t, t^{-1}] t^{a-b} (dt)^{-a}
|
|
684
|
+
|
|
685
|
+
and `v_k = t^{a-b+k} (dz)^{-a}`.
|
|
686
|
+
|
|
687
|
+
The chargeless representations are either irreducible or
|
|
688
|
+
contains exactly two simple subquotients, one of which is the
|
|
689
|
+
trivial representation and the other is `F[t, t^{-1}] / F`.
|
|
690
|
+
The non-trivial simple subquotients are called the
|
|
691
|
+
*intermediate series*.
|
|
692
|
+
|
|
693
|
+
The module `V_{a,b}` is irreducible if and only if
|
|
694
|
+
`a \neq 0, -1` or `b \notin \ZZ`. When `a = 0` and `b \in \ZZ`,
|
|
695
|
+
then there exists a subrepresentation isomorphic to the trivial
|
|
696
|
+
representation. If `a = -1` and `b \in \ZZ`, then there exists
|
|
697
|
+
a subrepresentation `V` such that `V_{a,b} / V` is isomorphic
|
|
698
|
+
to `K \frac{dt}{t}` and `V` is irreducible.
|
|
699
|
+
|
|
700
|
+
In characteristic `p`, the non-trivial simple subquotient
|
|
701
|
+
is isomorphic to `F[t, t^{-1}] / F[t^p, t^{-p}]`. For
|
|
702
|
+
`p \neq 2,3`, then the action is given as above.
|
|
703
|
+
|
|
704
|
+
EXAMPLES:
|
|
705
|
+
|
|
706
|
+
We first construct the irreducible `V_{1/2, 3/4}` and do some
|
|
707
|
+
basic computations::
|
|
708
|
+
|
|
709
|
+
sage: L = lie_algebras.VirasoroAlgebra(QQ)
|
|
710
|
+
sage: M = L.chargeless_representation(1/2, 3/4)
|
|
711
|
+
sage: d = L.basis()
|
|
712
|
+
sage: v = M.basis()
|
|
713
|
+
sage: d[3] * v[2]
|
|
714
|
+
1/4*v[5]
|
|
715
|
+
sage: d[3] * v[-1]
|
|
716
|
+
13/4*v[2]
|
|
717
|
+
sage: (d[3] - d[-2]) * (v[-1] + 1/2*v[0] - v[4])
|
|
718
|
+
-3/4*v[-3] + 1/8*v[-2] - v[2] + 9/8*v[3] + 7/4*v[7]
|
|
719
|
+
|
|
720
|
+
We construct the reducible `V_{0,2}` and the trivial
|
|
721
|
+
subrepresentation given by the span of `v_2`. We verify
|
|
722
|
+
this for `\{d_i \mid -10 \leq i < 10\}`::
|
|
723
|
+
|
|
724
|
+
sage: M = L.chargeless_representation(0, 2)
|
|
725
|
+
sage: v = M.basis()
|
|
726
|
+
sage: all(d[i] * v[2] == M.zero() for i in range(-10, 10))
|
|
727
|
+
True
|
|
728
|
+
|
|
729
|
+
REFERENCES:
|
|
730
|
+
|
|
731
|
+
- [Mat1992]_
|
|
732
|
+
- [IK2010]_
|
|
733
|
+
"""
|
|
734
|
+
def __init__(self, V, a, b):
|
|
735
|
+
"""
|
|
736
|
+
Initialize ``self``.
|
|
737
|
+
|
|
738
|
+
EXAMPLES::
|
|
739
|
+
|
|
740
|
+
sage: L = lie_algebras.VirasoroAlgebra(QQ)
|
|
741
|
+
sage: M = L.chargeless_representation(1/2, 3/4)
|
|
742
|
+
sage: TestSuite(M).run()
|
|
743
|
+
"""
|
|
744
|
+
self._a = a
|
|
745
|
+
self._b = b
|
|
746
|
+
self._V = V
|
|
747
|
+
R = V.base_ring()
|
|
748
|
+
if R.characteristic() in [2, 3]:
|
|
749
|
+
raise NotImplementedError("not implemented for characteristic 2,3")
|
|
750
|
+
cat = Modules(R).WithBasis().Graded()
|
|
751
|
+
CombinatorialFreeModule.__init__(self, R, ZZ, prefix='v', category=cat)
|
|
752
|
+
|
|
753
|
+
def _repr_(self):
|
|
754
|
+
"""
|
|
755
|
+
Return a string representation of ``self``.
|
|
756
|
+
|
|
757
|
+
EXAMPLES::
|
|
758
|
+
|
|
759
|
+
sage: L = lie_algebras.VirasoroAlgebra(QQ)
|
|
760
|
+
sage: L.chargeless_representation(1/2, 3/4)
|
|
761
|
+
Chargeless representation (1/2, 3/4) of
|
|
762
|
+
The Virasoro algebra over Rational Field
|
|
763
|
+
"""
|
|
764
|
+
return "Chargeless representation ({}, {}) of {}".format(
|
|
765
|
+
self._a, self._b, self._V)
|
|
766
|
+
|
|
767
|
+
def parameters(self):
|
|
768
|
+
"""
|
|
769
|
+
Return the parameters `(a, b)` of ``self``.
|
|
770
|
+
|
|
771
|
+
EXAMPLES::
|
|
772
|
+
|
|
773
|
+
sage: L = lie_algebras.VirasoroAlgebra(QQ)
|
|
774
|
+
sage: M = L.chargeless_representation(1/2, 3/4)
|
|
775
|
+
sage: M.parameters()
|
|
776
|
+
(1/2, 3/4)
|
|
777
|
+
"""
|
|
778
|
+
return (self._a, self._b)
|
|
779
|
+
|
|
780
|
+
def virasoro_algebra(self):
|
|
781
|
+
"""
|
|
782
|
+
Return the Virasoro algebra ``self`` is a representation of.
|
|
783
|
+
|
|
784
|
+
EXAMPLES::
|
|
785
|
+
|
|
786
|
+
sage: L = lie_algebras.VirasoroAlgebra(QQ)
|
|
787
|
+
sage: M = L.chargeless_representation(1/2, 3/4)
|
|
788
|
+
sage: M.virasoro_algebra() is L
|
|
789
|
+
True
|
|
790
|
+
"""
|
|
791
|
+
return self._V
|
|
792
|
+
|
|
793
|
+
def degree_on_basis(self, i):
|
|
794
|
+
r"""
|
|
795
|
+
Return the degree of the basis element indexed by ``i``,
|
|
796
|
+
which is `i`.
|
|
797
|
+
|
|
798
|
+
EXAMPLES::
|
|
799
|
+
|
|
800
|
+
sage: L = lie_algebras.VirasoroAlgebra(QQ)
|
|
801
|
+
sage: M = L.chargeless_representation(1/2, 3/4)
|
|
802
|
+
sage: M.degree_on_basis(-3)
|
|
803
|
+
-3
|
|
804
|
+
"""
|
|
805
|
+
return i
|
|
806
|
+
|
|
807
|
+
class Element(CombinatorialFreeModule.Element):
|
|
808
|
+
def _acted_upon_(self, scalar, self_on_left=False):
|
|
809
|
+
"""
|
|
810
|
+
Return the action of ``scalar`` on ``self``.
|
|
811
|
+
|
|
812
|
+
EXAMPLES::
|
|
813
|
+
|
|
814
|
+
sage: L = lie_algebras.VirasoroAlgebra(QQ)
|
|
815
|
+
sage: d = L.basis()
|
|
816
|
+
sage: M = L.chargeless_representation(1/2, 3/4)
|
|
817
|
+
sage: x = d[-5] * M.an_element() + M.basis()[10]; x
|
|
818
|
+
-9/4*v[-6] - 7/4*v[-5] - 33/4*v[-4] + v[10]
|
|
819
|
+
sage: d[2] * x
|
|
820
|
+
-279/16*v[-4] - 189/16*v[-3] - 759/16*v[-2] - 33/4*v[12]
|
|
821
|
+
|
|
822
|
+
sage: v = M.basis()
|
|
823
|
+
sage: all(d[i]*(d[j]*v[k]) - d[j]*(d[i]*v[k]) == d[i].bracket(d[j])*v[k]
|
|
824
|
+
....: for i in range(-5, 5) for j in range(-5, 5) for k in range(-5, 5))
|
|
825
|
+
True
|
|
826
|
+
"""
|
|
827
|
+
P = self.parent()
|
|
828
|
+
# We implement only a left action
|
|
829
|
+
if not self_on_left and scalar in P._V:
|
|
830
|
+
scalar = P._V(scalar)
|
|
831
|
+
return P.sum_of_terms((n+k, (P._a * n + P._b - k) * cv * cm)
|
|
832
|
+
for n,cv in scalar.monomial_coefficients(copy=False).items() if n != 'c'
|
|
833
|
+
for k,cm in self.monomial_coefficients(copy=False).items())
|
|
834
|
+
return CombinatorialFreeModule.Element._acted_upon_(self, scalar, self_on_left)
|
|
835
|
+
|
|
836
|
+
_rmul_ = _lmul_ = _acted_upon_
|
|
837
|
+
|
|
838
|
+
|
|
839
|
+
class VermaModule(CombinatorialFreeModule):
|
|
840
|
+
r"""
|
|
841
|
+
A Verma module of the Virasoro algebra.
|
|
842
|
+
|
|
843
|
+
The Virasoro algebra admits a triangular decomposition
|
|
844
|
+
|
|
845
|
+
.. MATH::
|
|
846
|
+
|
|
847
|
+
V_- \oplus R d_0 \oplus R \hat{c} \oplus V_+,
|
|
848
|
+
|
|
849
|
+
where `V_-` (resp. `V_+`) is the span of `\{d_i \mid i < 0\}`
|
|
850
|
+
(resp. `\{d_i \mid i > 0\}`). We can construct the *Verma module*
|
|
851
|
+
`M_{c,h}` as the induced representation of the `R d_0 \oplus
|
|
852
|
+
R \hat{c} \oplus V_+` representation `R_{c,H} = Rv`, where
|
|
853
|
+
|
|
854
|
+
.. MATH::
|
|
855
|
+
|
|
856
|
+
V_+ v = 0, \qquad \hat{c} v = c v, \qquad d_0 v = h v.
|
|
857
|
+
|
|
858
|
+
Therefore, we have a basis of `M_{c,h}`
|
|
859
|
+
|
|
860
|
+
.. MATH::
|
|
861
|
+
|
|
862
|
+
\{ L_{i_1} \cdots L_{i_k} v \mid i_1 \leq \cdots \leq i_k < 0 \}.
|
|
863
|
+
|
|
864
|
+
Moreover, the Verma modules are the free objects in the category of
|
|
865
|
+
highest weight representations of `V` and are indecomposable.
|
|
866
|
+
The Verma module `M_{c,h}` is irreducible for generic values of `c`
|
|
867
|
+
and `h` and when it is reducible, the quotient by the maximal
|
|
868
|
+
submodule is the unique irreducible highest weight representation
|
|
869
|
+
`V_{c,h}`.
|
|
870
|
+
|
|
871
|
+
EXAMPLES:
|
|
872
|
+
|
|
873
|
+
We construct a Verma module and do some basic computations::
|
|
874
|
+
|
|
875
|
+
sage: L = lie_algebras.VirasoroAlgebra(QQ)
|
|
876
|
+
sage: M = L.verma_module(3, 0)
|
|
877
|
+
sage: d = L.basis()
|
|
878
|
+
sage: v = M.highest_weight_vector()
|
|
879
|
+
sage: d[3] * v
|
|
880
|
+
0
|
|
881
|
+
sage: d[-3] * v
|
|
882
|
+
d[-3]*v
|
|
883
|
+
sage: d[-1] * (d[-3] * v)
|
|
884
|
+
2*d[-4]*v + d[-3]*d[-1]*v
|
|
885
|
+
sage: d[2] * (d[-1] * (d[-3] * v))
|
|
886
|
+
12*d[-2]*v + 5*d[-1]*d[-1]*v
|
|
887
|
+
|
|
888
|
+
We verify that `d_{-1} v` is a singular vector for
|
|
889
|
+
`\{d_i \mid 1 \leq i < 20\}`::
|
|
890
|
+
|
|
891
|
+
sage: w = M.basis()[-1]; w
|
|
892
|
+
d[-1]*v
|
|
893
|
+
sage: all(d[i] * w == M.zero() for i in range(1,20))
|
|
894
|
+
True
|
|
895
|
+
|
|
896
|
+
We also verify a singular vector for `V_{-2,1}`::
|
|
897
|
+
|
|
898
|
+
sage: M = L.verma_module(-2, 1)
|
|
899
|
+
sage: B = M.basis()
|
|
900
|
+
sage: w = B[-1,-1] - 2 * B[-2]
|
|
901
|
+
sage: d = L.basis()
|
|
902
|
+
sage: all(d[i] * w == M.zero() for i in range(1,20))
|
|
903
|
+
True
|
|
904
|
+
|
|
905
|
+
REFERENCES:
|
|
906
|
+
|
|
907
|
+
- :wikipedia:`Virasoro_algebra#Representation_theory`
|
|
908
|
+
"""
|
|
909
|
+
@staticmethod
|
|
910
|
+
def __classcall_private__(cls, V, c, h):
|
|
911
|
+
"""
|
|
912
|
+
Normalize input to ensure a unique representation.
|
|
913
|
+
|
|
914
|
+
EXAMPLES::
|
|
915
|
+
|
|
916
|
+
sage: L = lie_algebras.VirasoroAlgebra(QQ)
|
|
917
|
+
sage: M = L.verma_module(3, 1/2)
|
|
918
|
+
sage: M2 = L.verma_module(int(3), 1/2)
|
|
919
|
+
sage: M is M2
|
|
920
|
+
True
|
|
921
|
+
"""
|
|
922
|
+
R = V.base_ring()
|
|
923
|
+
return super().__classcall__(cls, V, R(c), R(h))
|
|
924
|
+
|
|
925
|
+
@staticmethod
|
|
926
|
+
def _partition_to_neg_tuple(x):
|
|
927
|
+
"""
|
|
928
|
+
Helper function to convert a partition to an increasing
|
|
929
|
+
sequence of negative numbers.
|
|
930
|
+
|
|
931
|
+
EXAMPLES::
|
|
932
|
+
|
|
933
|
+
sage: from sage.algebras.lie_algebras.virasoro import VermaModule
|
|
934
|
+
sage: VermaModule._partition_to_neg_tuple([3,2,2,1])
|
|
935
|
+
(-3, -2, -2, -1)
|
|
936
|
+
"""
|
|
937
|
+
# The entries of the partition are likely ints, but we need to
|
|
938
|
+
# make sure they are Integers.
|
|
939
|
+
return tuple([ZZ(-i) for i in x])
|
|
940
|
+
|
|
941
|
+
def __init__(self, V, c, h):
|
|
942
|
+
"""
|
|
943
|
+
Initialize ``self``.
|
|
944
|
+
|
|
945
|
+
EXAMPLES::
|
|
946
|
+
|
|
947
|
+
sage: L = lie_algebras.VirasoroAlgebra(QQ)
|
|
948
|
+
sage: M = L.verma_module(3, 1/2)
|
|
949
|
+
sage: TestSuite(M).run()
|
|
950
|
+
"""
|
|
951
|
+
self._c = c
|
|
952
|
+
self._h = h
|
|
953
|
+
self._V = V
|
|
954
|
+
from sage.combinat.partition import _Partitions
|
|
955
|
+
indices = _Partitions.map(VermaModule._partition_to_neg_tuple)
|
|
956
|
+
R = V.base_ring()
|
|
957
|
+
cat = Modules(R).WithBasis().Graded()
|
|
958
|
+
CombinatorialFreeModule.__init__(self, R, indices, prefix='v', category=cat)
|
|
959
|
+
|
|
960
|
+
def _repr_term(self, k):
|
|
961
|
+
"""
|
|
962
|
+
Return a string representation for the term indexed by ``k``.
|
|
963
|
+
|
|
964
|
+
EXAMPLES::
|
|
965
|
+
|
|
966
|
+
sage: L = lie_algebras.VirasoroAlgebra(QQ)
|
|
967
|
+
sage: M = L.verma_module(1, -2)
|
|
968
|
+
sage: M._repr_term((-3,-2,-2,-1))
|
|
969
|
+
'd[-3]*d[-2]*d[-2]*d[-1]*v'
|
|
970
|
+
"""
|
|
971
|
+
if not k:
|
|
972
|
+
return 'v'
|
|
973
|
+
d = self._V.basis()
|
|
974
|
+
return '*'.join(repr(d[i]) for i in k) + '*v'
|
|
975
|
+
|
|
976
|
+
def _latex_term(self, k):
|
|
977
|
+
"""
|
|
978
|
+
Return a latex representation for the term indexed by ``k``.
|
|
979
|
+
|
|
980
|
+
EXAMPLES::
|
|
981
|
+
|
|
982
|
+
sage: L = lie_algebras.VirasoroAlgebra(QQ)
|
|
983
|
+
sage: M = L.verma_module(1, -2)
|
|
984
|
+
sage: M._latex_term((-3,-2,-2,-1))
|
|
985
|
+
'd_{-3} d_{-2} d_{-2} d_{-1} v'
|
|
986
|
+
"""
|
|
987
|
+
if not k:
|
|
988
|
+
return 'v'
|
|
989
|
+
d = self._V.basis()
|
|
990
|
+
from sage.misc.latex import latex
|
|
991
|
+
return ' '.join(latex(d[i]) for i in k) + ' v'
|
|
992
|
+
|
|
993
|
+
def _repr_(self):
|
|
994
|
+
"""
|
|
995
|
+
Return a string representation of ``self``.
|
|
996
|
+
|
|
997
|
+
EXAMPLES::
|
|
998
|
+
|
|
999
|
+
sage: L = lie_algebras.VirasoroAlgebra(QQ)
|
|
1000
|
+
sage: M = L.verma_module(3, 0)
|
|
1001
|
+
sage: M
|
|
1002
|
+
Verma module with charge 3 and conformal weight 0 of
|
|
1003
|
+
The Virasoro algebra over Rational Field
|
|
1004
|
+
"""
|
|
1005
|
+
return "Verma module with charge {} and conformal weight {} of {}".format(
|
|
1006
|
+
self._c, self._h, self._V)
|
|
1007
|
+
|
|
1008
|
+
def _monomial(self, index):
|
|
1009
|
+
"""
|
|
1010
|
+
TESTS::
|
|
1011
|
+
|
|
1012
|
+
sage: L = lie_algebras.VirasoroAlgebra(QQ)
|
|
1013
|
+
sage: M = L.verma_module(3, 0)
|
|
1014
|
+
sage: v = M.basis()
|
|
1015
|
+
sage: v[-3] # indirect doctest
|
|
1016
|
+
d[-3]*v
|
|
1017
|
+
sage: v[-3,-2,-2] # indirect doctest
|
|
1018
|
+
d[-3]*d[-2]*d[-2]*v
|
|
1019
|
+
"""
|
|
1020
|
+
if index in ZZ:
|
|
1021
|
+
if index >= 0:
|
|
1022
|
+
raise ValueError("sequence must have nonpositive entries")
|
|
1023
|
+
index = (index,)
|
|
1024
|
+
return super()._monomial(index)
|
|
1025
|
+
|
|
1026
|
+
def central_charge(self):
|
|
1027
|
+
"""
|
|
1028
|
+
Return the central charge of ``self``.
|
|
1029
|
+
|
|
1030
|
+
EXAMPLES::
|
|
1031
|
+
|
|
1032
|
+
sage: L = lie_algebras.VirasoroAlgebra(QQ)
|
|
1033
|
+
sage: M = L.verma_module(3, 0)
|
|
1034
|
+
sage: M.central_charge()
|
|
1035
|
+
3
|
|
1036
|
+
"""
|
|
1037
|
+
return self._c
|
|
1038
|
+
|
|
1039
|
+
def conformal_weight(self):
|
|
1040
|
+
"""
|
|
1041
|
+
Return the conformal weight of ``self``.
|
|
1042
|
+
|
|
1043
|
+
EXAMPLES::
|
|
1044
|
+
|
|
1045
|
+
sage: L = lie_algebras.VirasoroAlgebra(QQ)
|
|
1046
|
+
sage: M = L.verma_module(3, 0)
|
|
1047
|
+
sage: M.conformal_weight()
|
|
1048
|
+
3
|
|
1049
|
+
"""
|
|
1050
|
+
return self._c
|
|
1051
|
+
|
|
1052
|
+
def virasoro_algebra(self):
|
|
1053
|
+
"""
|
|
1054
|
+
Return the Virasoro algebra ``self`` is a representation of.
|
|
1055
|
+
|
|
1056
|
+
EXAMPLES::
|
|
1057
|
+
|
|
1058
|
+
sage: L = lie_algebras.VirasoroAlgebra(QQ)
|
|
1059
|
+
sage: M = L.verma_module(1/2, 3/4)
|
|
1060
|
+
sage: M.virasoro_algebra() is L
|
|
1061
|
+
True
|
|
1062
|
+
"""
|
|
1063
|
+
return self._V
|
|
1064
|
+
|
|
1065
|
+
@cached_method
|
|
1066
|
+
def highest_weight_vector(self):
|
|
1067
|
+
"""
|
|
1068
|
+
Return the highest weight vector of ``self``.
|
|
1069
|
+
|
|
1070
|
+
EXAMPLES::
|
|
1071
|
+
|
|
1072
|
+
sage: L = lie_algebras.VirasoroAlgebra(QQ)
|
|
1073
|
+
sage: M = L.verma_module(-2/7, 3)
|
|
1074
|
+
sage: M.highest_weight_vector()
|
|
1075
|
+
v
|
|
1076
|
+
"""
|
|
1077
|
+
return self.monomial(())
|
|
1078
|
+
|
|
1079
|
+
def _d_action_on_basis(self, n, k):
|
|
1080
|
+
"""
|
|
1081
|
+
Return the action of `d_n` on `v_k`.
|
|
1082
|
+
|
|
1083
|
+
EXAMPLES::
|
|
1084
|
+
|
|
1085
|
+
sage: L = lie_algebras.VirasoroAlgebra(QQ)
|
|
1086
|
+
sage: M = L.verma_module(-2/7, 3)
|
|
1087
|
+
sage: M._d_action_on_basis(-3, ())
|
|
1088
|
+
d[-3]*v
|
|
1089
|
+
sage: M._d_action_on_basis(0, ())
|
|
1090
|
+
3*v
|
|
1091
|
+
sage: M._d_action_on_basis('c', ())
|
|
1092
|
+
-2/7*v
|
|
1093
|
+
sage: M._d_action_on_basis('c', (-4,-2,-2,-1))
|
|
1094
|
+
-2/7*d[-4]*d[-2]*d[-2]*d[-1]*v
|
|
1095
|
+
sage: M._d_action_on_basis(3, (-4,-2,-2,-1))
|
|
1096
|
+
7*d[-5]*d[-1]*v + 60*d[-4]*d[-2]*v + 15*d[-4]*d[-1]*d[-1]*v
|
|
1097
|
+
+ 14*d[-3]*d[-2]*d[-1]*v + 7*d[-2]*d[-2]*d[-1]*d[-1]*v
|
|
1098
|
+
sage: M._d_action_on_basis(-1, (-4,-2,-2,-1))
|
|
1099
|
+
d[-9]*d[-1]*v + d[-5]*d[-4]*d[-1]*v + 3*d[-5]*d[-2]*d[-2]*d[-1]*v
|
|
1100
|
+
+ 2*d[-4]*d[-3]*d[-2]*d[-1]*v + d[-4]*d[-2]*d[-2]*d[-1]*d[-1]*v
|
|
1101
|
+
"""
|
|
1102
|
+
# c acts my multiplication by self._c on all elements
|
|
1103
|
+
if n == 'c':
|
|
1104
|
+
return self.term(k, self._c)
|
|
1105
|
+
|
|
1106
|
+
# when k corresponds to the highest weight vector
|
|
1107
|
+
if not k:
|
|
1108
|
+
if n > 0:
|
|
1109
|
+
return self.zero()
|
|
1110
|
+
if n == 0:
|
|
1111
|
+
return self.term(k, self._h)
|
|
1112
|
+
return self.monomial((n,))
|
|
1113
|
+
|
|
1114
|
+
# The basis are eigenvectors for d_0
|
|
1115
|
+
if n == 0:
|
|
1116
|
+
return self.term(k, self._h - sum(k))
|
|
1117
|
+
|
|
1118
|
+
# We keep things in order
|
|
1119
|
+
if n <= k[0]:
|
|
1120
|
+
return self.monomial((n,) + k)
|
|
1121
|
+
|
|
1122
|
+
# [L_n, L_m] v = L_n L_m v - L_m L_n v
|
|
1123
|
+
# L_n L_m v = L_m L_n v + [L_n, L_m] v
|
|
1124
|
+
d = self._V.basis()
|
|
1125
|
+
m = k[0]
|
|
1126
|
+
k = k[1:]
|
|
1127
|
+
# We need to explicitly call the action as this method is
|
|
1128
|
+
# used in discovering the action
|
|
1129
|
+
return (self._d_action_on_basis(n, k)._acted_upon_(d[m], False)
|
|
1130
|
+
+ self.monomial(k)._acted_upon_(d[n].bracket(d[m]), False))
|
|
1131
|
+
|
|
1132
|
+
def degree_on_basis(self, d):
|
|
1133
|
+
r"""
|
|
1134
|
+
Return the degree of the basis element indexed by ``d``, which
|
|
1135
|
+
is the sum of the entries of ``d``.
|
|
1136
|
+
|
|
1137
|
+
EXAMPLES::
|
|
1138
|
+
|
|
1139
|
+
sage: L = lie_algebras.VirasoroAlgebra(QQ)
|
|
1140
|
+
sage: M = L.verma_module(-2/7, 3)
|
|
1141
|
+
sage: M.degree_on_basis((-3,-3,-1))
|
|
1142
|
+
-7
|
|
1143
|
+
"""
|
|
1144
|
+
return sum(d)
|
|
1145
|
+
|
|
1146
|
+
class Element(CombinatorialFreeModule.Element):
|
|
1147
|
+
def _acted_upon_(self, scalar, self_on_left=False):
|
|
1148
|
+
"""
|
|
1149
|
+
Return the action of ``scalar`` on ``self``.
|
|
1150
|
+
|
|
1151
|
+
EXAMPLES::
|
|
1152
|
+
|
|
1153
|
+
sage: L = lie_algebras.VirasoroAlgebra(QQ)
|
|
1154
|
+
sage: d = L.basis()
|
|
1155
|
+
sage: M = L.verma_module(1/2, 3/4)
|
|
1156
|
+
sage: x = d[-5] * M.an_element() + M.basis()[-10]; x
|
|
1157
|
+
d[-10]*v + 2*d[-5]*v + 3*d[-5]*d[-2]*v + 2*d[-5]*d[-1]*v
|
|
1158
|
+
sage: d[2] * x
|
|
1159
|
+
12*d[-8]*v + 39/4*d[-5]*v + 14*d[-3]*v + 21*d[-3]*d[-2]*v
|
|
1160
|
+
+ 14*d[-3]*d[-1]*v
|
|
1161
|
+
sage: v = M.highest_weight_vector()
|
|
1162
|
+
sage: d[2] * (d[-2] * v)
|
|
1163
|
+
13/4*v
|
|
1164
|
+
|
|
1165
|
+
sage: it = iter(M.basis())
|
|
1166
|
+
sage: B = [next(it) for _ in range(10)]
|
|
1167
|
+
sage: all(d[i]*(d[j]*v) - d[j]*(d[i]*v) == d[i].bracket(d[j])*v
|
|
1168
|
+
....: for i in range(-5, 5) for j in range(-5, 5) for v in B)
|
|
1169
|
+
True
|
|
1170
|
+
"""
|
|
1171
|
+
P = self.parent()
|
|
1172
|
+
# We implement only a left action
|
|
1173
|
+
if not self_on_left:
|
|
1174
|
+
S = scalar.parent()
|
|
1175
|
+
R = P.base_ring()
|
|
1176
|
+
if S is R or scalar in R:
|
|
1177
|
+
scalar = R(scalar)
|
|
1178
|
+
return P._from_dict({k: scalar*c for k,c in self._monomial_coefficients.items()})
|
|
1179
|
+
elif S is P._V or scalar in P._V:
|
|
1180
|
+
scalar = P._V(scalar)
|
|
1181
|
+
return P.linear_combination((P._d_action_on_basis(n, k), cv * cm)
|
|
1182
|
+
for n,cv in scalar.monomial_coefficients(copy=False).items()
|
|
1183
|
+
for k,cm in self._monomial_coefficients.items())
|
|
1184
|
+
return CombinatorialFreeModule.Element._acted_upon_(self, scalar, self_on_left)
|
|
1185
|
+
|
|
1186
|
+
_rmul_ = _lmul_ = _acted_upon_
|