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,471 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
# sage.doctest: needs sage.combinat sage.geometry.polyhedron
|
|
3
|
+
r"""
|
|
4
|
+
Associahedron
|
|
5
|
+
|
|
6
|
+
.. TODO::
|
|
7
|
+
|
|
8
|
+
- fix adjacency matrix
|
|
9
|
+
- edit graph method to get proper vertex labellings
|
|
10
|
+
- UniqueRepresentation?
|
|
11
|
+
|
|
12
|
+
AUTHORS:
|
|
13
|
+
|
|
14
|
+
- Christian Stump
|
|
15
|
+
"""
|
|
16
|
+
# ***************************************************************************
|
|
17
|
+
# Copyright (C) 2011-2012 Christian Stump <christian.stump@gmail.com>
|
|
18
|
+
#
|
|
19
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
20
|
+
# The full text of the GPL is available at:
|
|
21
|
+
#
|
|
22
|
+
# https://www.gnu.org/licenses/
|
|
23
|
+
# ***************************************************************************
|
|
24
|
+
from sage.geometry.polyhedron.backend_ppl import Polyhedron_QQ_ppl
|
|
25
|
+
from sage.geometry.polyhedron.backend_normaliz import Polyhedron_QQ_normaliz
|
|
26
|
+
from sage.geometry.polyhedron.backend_cdd import Polyhedron_QQ_cdd
|
|
27
|
+
from sage.geometry.polyhedron.backend_field import Polyhedron_field
|
|
28
|
+
from sage.geometry.polyhedron.backend_polymake import Polyhedron_polymake
|
|
29
|
+
from sage.geometry.polyhedron.parent import Polyhedra, Polyhedra_base, Polyhedra_QQ_ppl, Polyhedra_QQ_normaliz, Polyhedra_QQ_cdd, Polyhedra_polymake, Polyhedra_field
|
|
30
|
+
from sage.combinat.root_system.cartan_type import CartanType
|
|
31
|
+
from sage.modules.free_module_element import vector
|
|
32
|
+
from sage.rings.integer_ring import ZZ
|
|
33
|
+
from sage.rings.rational_field import QQ
|
|
34
|
+
|
|
35
|
+
ancestors_of_associahedron = set([Polyhedron_QQ_ppl, Polyhedron_QQ_normaliz, Polyhedron_QQ_cdd, Polyhedron_field, Polyhedron_polymake])
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def Associahedron(cartan_type, backend='ppl'):
|
|
39
|
+
r"""
|
|
40
|
+
Construct an associahedron.
|
|
41
|
+
|
|
42
|
+
The generalized associahedron is a polytopal complex with vertices in
|
|
43
|
+
one-to-one correspondence with clusters in the cluster complex, and with
|
|
44
|
+
edges between two vertices if and only if the associated two clusters
|
|
45
|
+
intersect in codimension 1.
|
|
46
|
+
|
|
47
|
+
The associahedron of type `A_n` is one way to realize the classical
|
|
48
|
+
associahedron as defined in the :wikipedia:`Associahedron`.
|
|
49
|
+
|
|
50
|
+
A polytopal realization of the associahedron can be found in [CFZ2002]_. The
|
|
51
|
+
implementation is based on [CFZ2002]_, Theorem 1.5, Remark 1.6, and Corollary
|
|
52
|
+
1.9.
|
|
53
|
+
|
|
54
|
+
INPUT:
|
|
55
|
+
|
|
56
|
+
- ``cartan_type`` -- a cartan type according to
|
|
57
|
+
:class:`sage.combinat.root_system.cartan_type.CartanTypeFactory`
|
|
58
|
+
|
|
59
|
+
- ``backend`` -- string (``'ppl'``); the backend to use;
|
|
60
|
+
see :meth:`sage.geometry.polyhedron.constructor.Polyhedron`
|
|
61
|
+
|
|
62
|
+
EXAMPLES::
|
|
63
|
+
|
|
64
|
+
sage: Asso = polytopes.associahedron(['A',2]); Asso
|
|
65
|
+
Generalized associahedron of type ['A', 2] with 5 vertices
|
|
66
|
+
|
|
67
|
+
sage: sorted(Asso.Hrepresentation(), key=repr)
|
|
68
|
+
[An inequality (-1, 0) x + 1 >= 0,
|
|
69
|
+
An inequality (0, -1) x + 1 >= 0,
|
|
70
|
+
An inequality (0, 1) x + 1 >= 0,
|
|
71
|
+
An inequality (1, 0) x + 1 >= 0,
|
|
72
|
+
An inequality (1, 1) x + 1 >= 0]
|
|
73
|
+
|
|
74
|
+
sage: Asso.Vrepresentation()
|
|
75
|
+
(A vertex at (1, -1), A vertex at (1, 1), A vertex at (-1, 1),
|
|
76
|
+
A vertex at (-1, 0), A vertex at (0, -1))
|
|
77
|
+
|
|
78
|
+
sage: polytopes.associahedron(['B',2])
|
|
79
|
+
Generalized associahedron of type ['B', 2] with 6 vertices
|
|
80
|
+
|
|
81
|
+
The two pictures of [CFZ2002]_ can be recovered with::
|
|
82
|
+
|
|
83
|
+
sage: Asso = polytopes.associahedron(['A',3]); Asso
|
|
84
|
+
Generalized associahedron of type ['A', 3] with 14 vertices
|
|
85
|
+
sage: Asso.plot() # long time
|
|
86
|
+
Graphics3d Object
|
|
87
|
+
|
|
88
|
+
sage: Asso = polytopes.associahedron(['B',3]); Asso
|
|
89
|
+
Generalized associahedron of type ['B', 3] with 20 vertices
|
|
90
|
+
sage: Asso.plot() # long time
|
|
91
|
+
Graphics3d Object
|
|
92
|
+
|
|
93
|
+
TESTS::
|
|
94
|
+
|
|
95
|
+
sage: sorted(polytopes.associahedron(['A',3]).vertices())
|
|
96
|
+
[A vertex at (-3/2, 0, -1/2), A vertex at (-3/2, 0, 3/2),
|
|
97
|
+
A vertex at (-3/2, 1, -3/2), A vertex at (-3/2, 2, -3/2),
|
|
98
|
+
A vertex at (-3/2, 2, 3/2), A vertex at (-1/2, -1, -1/2),
|
|
99
|
+
A vertex at (-1/2, 0, -3/2), A vertex at (1/2, -2, 1/2),
|
|
100
|
+
A vertex at (1/2, -2, 3/2), A vertex at (3/2, -2, 1/2),
|
|
101
|
+
A vertex at (3/2, -2, 3/2), A vertex at (3/2, 0, -3/2),
|
|
102
|
+
A vertex at (3/2, 2, -3/2), A vertex at (3/2, 2, 3/2)]
|
|
103
|
+
|
|
104
|
+
sage: sorted(polytopes.associahedron(['B',3]).vertices())
|
|
105
|
+
[A vertex at (-3, 0, 0), A vertex at (-3, 0, 3),
|
|
106
|
+
A vertex at (-3, 2, -2), A vertex at (-3, 4, -3),
|
|
107
|
+
A vertex at (-3, 5, -3), A vertex at (-3, 5, 3),
|
|
108
|
+
A vertex at (-2, 1, -2), A vertex at (-2, 3, -3),
|
|
109
|
+
A vertex at (-1, -2, 0), A vertex at (-1, -1, -1),
|
|
110
|
+
A vertex at (1, -4, 1), A vertex at (1, -3, 0),
|
|
111
|
+
A vertex at (2, -5, 2), A vertex at (2, -5, 3),
|
|
112
|
+
A vertex at (3, -5, 2), A vertex at (3, -5, 3),
|
|
113
|
+
A vertex at (3, -3, 0), A vertex at (3, 3, -3),
|
|
114
|
+
A vertex at (3, 5, -3), A vertex at (3, 5, 3)]
|
|
115
|
+
|
|
116
|
+
sage: polytopes.associahedron(['A',4]).f_vector()
|
|
117
|
+
(1, 42, 84, 56, 14, 1)
|
|
118
|
+
sage: polytopes.associahedron(['B',4]).f_vector()
|
|
119
|
+
(1, 70, 140, 90, 20, 1)
|
|
120
|
+
|
|
121
|
+
sage: p1 = polytopes.associahedron(['A',4], backend='normaliz') # optional - pynormaliz
|
|
122
|
+
sage: TestSuite(p1).run(skip='_test_pickling') # optional - pynormaliz
|
|
123
|
+
sage: p2 = polytopes.associahedron(['A',4], backend='cdd') # needs cddexec_gmp
|
|
124
|
+
sage: TestSuite(p2).run() # needs cddexec_gmp
|
|
125
|
+
sage: p3 = polytopes.associahedron(['A',4], backend='field')
|
|
126
|
+
sage: TestSuite(p3).run()
|
|
127
|
+
"""
|
|
128
|
+
cartan_type = CartanType(cartan_type)
|
|
129
|
+
parent = Associahedra(QQ, cartan_type.rank(), backend)
|
|
130
|
+
return parent(cartan_type)
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
class Associahedron_class_base:
|
|
134
|
+
r"""
|
|
135
|
+
The base class of the Python class of an associahedron
|
|
136
|
+
|
|
137
|
+
You should use the :func:`Associahedron` convenience function to
|
|
138
|
+
construct associahedra from the Cartan type.
|
|
139
|
+
|
|
140
|
+
TESTS::
|
|
141
|
+
|
|
142
|
+
sage: Asso = polytopes.associahedron(['A',2]); Asso
|
|
143
|
+
Generalized associahedron of type ['A', 2] with 5 vertices
|
|
144
|
+
sage: TestSuite(Asso).run() # needs cddexec
|
|
145
|
+
"""
|
|
146
|
+
def __new__(typ, parent=None, Vrep=None, Hrep=None, cartan_type=None, **kwds):
|
|
147
|
+
r"""
|
|
148
|
+
Return instance of :class:`Assciahedron_class_base`, if ``cartan_type`` is provided
|
|
149
|
+
or object is being unpickled.
|
|
150
|
+
|
|
151
|
+
In other cases, this call is a result of a polyhedral construction with an associahedron.
|
|
152
|
+
Thus we return the corresponding instance of
|
|
153
|
+
:class:`sage.geometry.polyhedron.base.Polyhedron_base` (not an associahedron).
|
|
154
|
+
|
|
155
|
+
TESTS:
|
|
156
|
+
|
|
157
|
+
Check that faces of associahedra work::
|
|
158
|
+
|
|
159
|
+
sage: A = polytopes.associahedron(['A',3], backend='ppl'); A
|
|
160
|
+
Generalized associahedron of type ['A', 3] with 14 vertices
|
|
161
|
+
sage: face = A.faces(2)[3]
|
|
162
|
+
sage: P = face.as_polyhedron(); P
|
|
163
|
+
A 2-dimensional polyhedron in QQ^3 defined as the convex hull of 4 vertices
|
|
164
|
+
sage: P.backend()
|
|
165
|
+
'ppl'
|
|
166
|
+
sage: A = polytopes.associahedron(['A',3], backend='field'); A
|
|
167
|
+
Generalized associahedron of type ['A', 3] with 14 vertices
|
|
168
|
+
sage: A.faces(2)[3].as_polyhedron().backend()
|
|
169
|
+
'field'
|
|
170
|
+
|
|
171
|
+
Check other polytopal constructions::
|
|
172
|
+
|
|
173
|
+
sage: A = polytopes.associahedron(['A',4], backend='ppl')
|
|
174
|
+
sage: A + A
|
|
175
|
+
A 4-dimensional polyhedron in QQ^4 defined as the convex hull of 42 vertices
|
|
176
|
+
sage: A - A
|
|
177
|
+
A 0-dimensional polyhedron in QQ^4 defined as the convex hull of 1 vertex
|
|
178
|
+
sage: A.intersection(A)
|
|
179
|
+
A 4-dimensional polyhedron in QQ^4 defined as the convex hull of 42 vertices
|
|
180
|
+
sage: A.translation(A.center())
|
|
181
|
+
A 4-dimensional polyhedron in QQ^4 defined as the convex hull of 42 vertices
|
|
182
|
+
sage: A.dilation(2)
|
|
183
|
+
A 4-dimensional polyhedron in QQ^4 defined as the convex hull of 42 vertices
|
|
184
|
+
sage: A.dilation(2.0) # needs cddexec
|
|
185
|
+
A 4-dimensional polyhedron in RDF^4 defined as the convex hull of 42 vertices
|
|
186
|
+
sage: A.convex_hull(A)
|
|
187
|
+
A 4-dimensional polyhedron in QQ^4 defined as the convex hull of 42 vertices
|
|
188
|
+
sage: A.polar()
|
|
189
|
+
A 4-dimensional polyhedron in QQ^4 defined as the convex hull of 14 vertices
|
|
190
|
+
"""
|
|
191
|
+
if cartan_type or (parent is None and Vrep is None and Hrep is None):
|
|
192
|
+
# Called from element constructor in ``Associahedron_base``.
|
|
193
|
+
# Alternatively called from ``loads`` in ``loads(dumps(...))``.
|
|
194
|
+
return super().__new__(typ, parent, Vrep, Hrep, **kwds)
|
|
195
|
+
else:
|
|
196
|
+
# Not called from element constructor in ``Associahedron_base``.
|
|
197
|
+
# Return a polyhedron with proper backend (not an associahedron).
|
|
198
|
+
# Thus e.g. a face of an Associahedron can be initialized as a polyhedron.
|
|
199
|
+
mro = typ.mro()
|
|
200
|
+
for typ1 in mro:
|
|
201
|
+
if typ1 in ancestors_of_associahedron:
|
|
202
|
+
return typ1(parent, Vrep, Hrep, **kwds)
|
|
203
|
+
raise ValueError("could not determine a parent class")
|
|
204
|
+
|
|
205
|
+
def __init__(self, parent, Vrep, Hrep, cartan_type=None, **kwds):
|
|
206
|
+
r"""
|
|
207
|
+
Initialize an associahedron.
|
|
208
|
+
|
|
209
|
+
If ``'cartan_type'`` is ``None``, :meth:`Associahedron_class_base.__new__`
|
|
210
|
+
returns a (general) polyhedron instead.
|
|
211
|
+
|
|
212
|
+
TESTS::
|
|
213
|
+
|
|
214
|
+
sage: A = polytopes.associahedron(['A',3], backend='ppl'); A
|
|
215
|
+
Generalized associahedron of type ['A', 3] with 14 vertices
|
|
216
|
+
"""
|
|
217
|
+
if cartan_type:
|
|
218
|
+
self._cartan_type = cartan_type
|
|
219
|
+
super().__init__(parent, Vrep, Hrep, **kwds)
|
|
220
|
+
else:
|
|
221
|
+
raise ValueError("associahedron must be initialized with cartan type")
|
|
222
|
+
|
|
223
|
+
def _repr_(self):
|
|
224
|
+
r"""
|
|
225
|
+
Return a string representation of ``self``.
|
|
226
|
+
|
|
227
|
+
EXAMPLES::
|
|
228
|
+
|
|
229
|
+
sage: polytopes.associahedron(['A',3])._repr_()
|
|
230
|
+
"Generalized associahedron of type ['A', 3] with 14 vertices"
|
|
231
|
+
"""
|
|
232
|
+
msg = 'Generalized associahedron of type {} with {} vertices'
|
|
233
|
+
return msg.format(self._cartan_type, self.n_vertices())
|
|
234
|
+
|
|
235
|
+
def cartan_type(self):
|
|
236
|
+
r"""
|
|
237
|
+
Return the Cartan type of ``self``.
|
|
238
|
+
|
|
239
|
+
EXAMPLES::
|
|
240
|
+
|
|
241
|
+
sage: polytopes.associahedron(['A',3]).cartan_type()
|
|
242
|
+
['A', 3]
|
|
243
|
+
"""
|
|
244
|
+
return self._cartan_type
|
|
245
|
+
|
|
246
|
+
def vertices_in_root_space(self):
|
|
247
|
+
r"""
|
|
248
|
+
Return the vertices of ``self`` as elements in the root space.
|
|
249
|
+
|
|
250
|
+
EXAMPLES::
|
|
251
|
+
|
|
252
|
+
sage: Asso = polytopes.associahedron(['A',2])
|
|
253
|
+
sage: Asso.vertices()
|
|
254
|
+
(A vertex at (1, -1), A vertex at (1, 1),
|
|
255
|
+
A vertex at (-1, 1), A vertex at (-1, 0),
|
|
256
|
+
A vertex at (0, -1))
|
|
257
|
+
|
|
258
|
+
sage: Asso.vertices_in_root_space()
|
|
259
|
+
(alpha[1] - alpha[2], alpha[1] + alpha[2], -alpha[1] + alpha[2],
|
|
260
|
+
-alpha[1], -alpha[2])
|
|
261
|
+
"""
|
|
262
|
+
root_space = self._cartan_type.root_system().root_space()
|
|
263
|
+
return tuple(root_space.from_vector(vector(V))
|
|
264
|
+
for V in self.vertex_generator())
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
class Associahedron_class_ppl(Associahedron_class_base, Polyhedron_QQ_ppl):
|
|
268
|
+
pass
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
class Associahedron_class_normaliz(Associahedron_class_base, Polyhedron_QQ_normaliz):
|
|
272
|
+
pass
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
class Associahedron_class_cdd(Associahedron_class_base, Polyhedron_QQ_cdd):
|
|
276
|
+
pass
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
class Associahedron_class_polymake(Associahedron_class_base, Polyhedron_polymake):
|
|
280
|
+
pass
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
class Associahedron_class_field(Associahedron_class_base, Polyhedron_field):
|
|
284
|
+
pass
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
def Associahedra(base_ring, ambient_dim, backend='ppl'):
|
|
288
|
+
r"""
|
|
289
|
+
Construct a parent class of Associahedra according to ``backend``.
|
|
290
|
+
|
|
291
|
+
TESTS::
|
|
292
|
+
|
|
293
|
+
sage: from sage.combinat.root_system.associahedron import Associahedra
|
|
294
|
+
sage: Associahedra(QQ, 4, 'ppl').parent()
|
|
295
|
+
<class 'sage.combinat.root_system.associahedron.Associahedra_ppl_with_category'>
|
|
296
|
+
sage: Associahedra(QQ, 4, 'normaliz').parent() # optional - pynormaliz
|
|
297
|
+
<class 'sage.combinat.root_system.associahedron.Associahedra_normaliz_with_category'>
|
|
298
|
+
sage: Associahedra(QQ, 4, 'polymake').parent() # optional - jupymake
|
|
299
|
+
<class 'sage.combinat.root_system.associahedron.Associahedra_polymake_with_category'>
|
|
300
|
+
sage: Associahedra(QQ, 4, 'field').parent()
|
|
301
|
+
<class 'sage.combinat.root_system.associahedron.Associahedra_field_with_category'>
|
|
302
|
+
sage: Associahedra(QQ, 4, 'cdd').parent()
|
|
303
|
+
<class 'sage.combinat.root_system.associahedron.Associahedra_cdd_with_category'>
|
|
304
|
+
|
|
305
|
+
.. SEEALSO::
|
|
306
|
+
|
|
307
|
+
:class:`Associahedra_base`.
|
|
308
|
+
"""
|
|
309
|
+
if base_ring is not QQ:
|
|
310
|
+
raise NotImplementedError("base ring must be QQ")
|
|
311
|
+
if backend == 'ppl':
|
|
312
|
+
return Associahedra_ppl(base_ring, ambient_dim, backend)
|
|
313
|
+
elif backend == 'normaliz':
|
|
314
|
+
return Associahedra_normaliz(base_ring, ambient_dim, backend)
|
|
315
|
+
elif backend == 'cdd':
|
|
316
|
+
return Associahedra_cdd(QQ, ambient_dim, backend)
|
|
317
|
+
elif backend == 'polymake':
|
|
318
|
+
return Associahedra_polymake(base_ring.fraction_field(), ambient_dim, backend)
|
|
319
|
+
elif backend == 'field':
|
|
320
|
+
return Associahedra_field(base_ring, ambient_dim, backend)
|
|
321
|
+
else:
|
|
322
|
+
raise ValueError("unknown backend")
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
class Associahedra_base:
|
|
326
|
+
"""
|
|
327
|
+
Base class of parent of Associahedra of specified dimension
|
|
328
|
+
|
|
329
|
+
EXAMPLES::
|
|
330
|
+
|
|
331
|
+
sage: from sage.combinat.root_system.associahedron import Associahedra
|
|
332
|
+
sage: parent = Associahedra(QQ,2,'ppl'); parent
|
|
333
|
+
Polyhedra in QQ^2
|
|
334
|
+
sage: type(parent)
|
|
335
|
+
<class 'sage.combinat.root_system.associahedron.Associahedra_ppl_with_category'>
|
|
336
|
+
sage: parent(['A',2])
|
|
337
|
+
Generalized associahedron of type ['A', 2] with 5 vertices
|
|
338
|
+
|
|
339
|
+
Importantly, the parent knows the dimension of the ambient
|
|
340
|
+
space. If you try to construct an associahedron of a different
|
|
341
|
+
dimension, a :exc:`ValueError` is raised::
|
|
342
|
+
|
|
343
|
+
sage: parent(['A',3])
|
|
344
|
+
Traceback (most recent call last):
|
|
345
|
+
...
|
|
346
|
+
ValueError: V-representation data requires a list of length ambient_dim
|
|
347
|
+
"""
|
|
348
|
+
|
|
349
|
+
def _element_constructor_(self, cartan_type, **kwds):
|
|
350
|
+
"""
|
|
351
|
+
The element constructor.
|
|
352
|
+
|
|
353
|
+
This method is called internally when we try to convert
|
|
354
|
+
something into an element. In this case, the only thing that
|
|
355
|
+
can be converted into an associahedron is the Cartan type.
|
|
356
|
+
|
|
357
|
+
EXAMPLES::
|
|
358
|
+
|
|
359
|
+
sage: from sage.combinat.root_system.associahedron import Associahedra
|
|
360
|
+
sage: parent = Associahedra(QQ,2,'ppl')
|
|
361
|
+
sage: parent(['A',2])
|
|
362
|
+
Generalized associahedron of type ['A', 2] with 5 vertices
|
|
363
|
+
sage: parent._element_constructor_(['A',2])
|
|
364
|
+
Generalized associahedron of type ['A', 2] with 5 vertices
|
|
365
|
+
|
|
366
|
+
TESTS::
|
|
367
|
+
|
|
368
|
+
sage: parent(['A', 2, 1])
|
|
369
|
+
Traceback (most recent call last):
|
|
370
|
+
...
|
|
371
|
+
ValueError: the Cartan type must be finite
|
|
372
|
+
"""
|
|
373
|
+
cartan_type = CartanType(cartan_type)
|
|
374
|
+
if not cartan_type.is_finite():
|
|
375
|
+
raise ValueError("the Cartan type must be finite")
|
|
376
|
+
root_space = cartan_type.root_system().root_space()
|
|
377
|
+
# TODO: generalize this as a method of root lattice realization
|
|
378
|
+
rhocheck = sum(beta.associated_coroot()
|
|
379
|
+
for beta in root_space.positive_roots()) / 2
|
|
380
|
+
I = root_space.index_set()
|
|
381
|
+
inequalities = []
|
|
382
|
+
for orbit in root_space.almost_positive_roots_decomposition():
|
|
383
|
+
c = rhocheck.coefficient(orbit[0].leading_support())
|
|
384
|
+
for beta in orbit:
|
|
385
|
+
inequalities.append([c] + [beta.coefficient(i) for i in I])
|
|
386
|
+
associahedron = super()._element_constructor_(None, [inequalities, []], cartan_type=cartan_type)
|
|
387
|
+
return associahedron
|
|
388
|
+
|
|
389
|
+
def _coerce_map_from_(self, X):
|
|
390
|
+
r"""
|
|
391
|
+
Return whether there is a coercion from ``X``.
|
|
392
|
+
|
|
393
|
+
INPUT:
|
|
394
|
+
|
|
395
|
+
- ``X`` -- anything
|
|
396
|
+
|
|
397
|
+
OUTPUT: boolean
|
|
398
|
+
|
|
399
|
+
EXAMPLES::
|
|
400
|
+
|
|
401
|
+
sage: from sage.geometry.polyhedron.parent import Polyhedra
|
|
402
|
+
sage: from sage.combinat.root_system.associahedron import Associahedra
|
|
403
|
+
sage: Associahedra(QQ,3).has_coerce_map_from( Polyhedra(QQ,3) ) # indirect doctest
|
|
404
|
+
False
|
|
405
|
+
sage: Polyhedra(QQ,3).has_coerce_map_from( Associahedra(QQ,3) )
|
|
406
|
+
True
|
|
407
|
+
|
|
408
|
+
TESTS::
|
|
409
|
+
|
|
410
|
+
sage: A = polytopes.associahedron(['A',4], backend='ppl'); type(A.parent())
|
|
411
|
+
<class 'sage.combinat.root_system.associahedron.Associahedra_ppl_with_category'>
|
|
412
|
+
sage: B = polytopes.simplex().change_ring(QQ); type(B.parent())
|
|
413
|
+
<class 'sage.geometry.polyhedron.parent.Polyhedra_QQ_ppl_with_category'>
|
|
414
|
+
sage: A + B
|
|
415
|
+
A 4-dimensional polyhedron in QQ^4 defined as the convex hull of 70 vertices
|
|
416
|
+
sage: A - B
|
|
417
|
+
A 4-dimensional polyhedron in QQ^4 defined as the convex hull of 24 vertices
|
|
418
|
+
sage: A.intersection(B)
|
|
419
|
+
A 3-dimensional polyhedron in QQ^4 defined as the convex hull of 4 vertices
|
|
420
|
+
sage: A.convex_hull(B)
|
|
421
|
+
A 4-dimensional polyhedron in QQ^4 defined as the convex hull of 42 vertices
|
|
422
|
+
"""
|
|
423
|
+
if not isinstance(X, Associahedra_base):
|
|
424
|
+
return False
|
|
425
|
+
return super()._coerce_map_from_(X)
|
|
426
|
+
|
|
427
|
+
def _pushout_(self, other):
|
|
428
|
+
r"""
|
|
429
|
+
The pushout of Polyhedra over ZZ and Associahedra over QQ is Polyhedra over QQ.
|
|
430
|
+
|
|
431
|
+
TESTS::
|
|
432
|
+
|
|
433
|
+
sage: A = polytopes.associahedron(['A',4], backend='ppl'); type(A.parent())
|
|
434
|
+
<class 'sage.combinat.root_system.associahedron.Associahedra_ppl_with_category'>
|
|
435
|
+
sage: B = polytopes.simplex(); type(B.parent())
|
|
436
|
+
<class 'sage.geometry.polyhedron.parent.Polyhedra_ZZ_ppl_with_category'>
|
|
437
|
+
sage: A + B
|
|
438
|
+
A 4-dimensional polyhedron in QQ^4 defined as the convex hull of 70 vertices
|
|
439
|
+
sage: A - B
|
|
440
|
+
A 4-dimensional polyhedron in QQ^4 defined as the convex hull of 24 vertices
|
|
441
|
+
sage: A.intersection(B)
|
|
442
|
+
A 3-dimensional polyhedron in QQ^4 defined as the convex hull of 4 vertices
|
|
443
|
+
sage: A.convex_hull(B)
|
|
444
|
+
A 4-dimensional polyhedron in QQ^4 defined as the convex hull of 42 vertices
|
|
445
|
+
"""
|
|
446
|
+
if isinstance(other, Polyhedra_base) and other.base_ring() == ZZ:
|
|
447
|
+
return Polyhedra(QQ, self.ambient_dim(), self.backend())
|
|
448
|
+
|
|
449
|
+
# Call the overwritten pushout in case it exists.
|
|
450
|
+
if hasattr(super(), '_pushout_'):
|
|
451
|
+
return super()._pushout_(other)
|
|
452
|
+
|
|
453
|
+
|
|
454
|
+
class Associahedra_ppl(Associahedra_base, Polyhedra_QQ_ppl):
|
|
455
|
+
Element = Associahedron_class_ppl
|
|
456
|
+
|
|
457
|
+
|
|
458
|
+
class Associahedra_normaliz(Associahedra_base, Polyhedra_QQ_normaliz):
|
|
459
|
+
Element = Associahedron_class_normaliz
|
|
460
|
+
|
|
461
|
+
|
|
462
|
+
class Associahedra_cdd(Associahedra_base, Polyhedra_QQ_cdd):
|
|
463
|
+
Element = Associahedron_class_cdd
|
|
464
|
+
|
|
465
|
+
|
|
466
|
+
class Associahedra_polymake(Associahedra_base, Polyhedra_polymake):
|
|
467
|
+
Element = Associahedron_class_polymake
|
|
468
|
+
|
|
469
|
+
|
|
470
|
+
class Associahedra_field(Associahedra_base, Polyhedra_field):
|
|
471
|
+
Element = Associahedron_class_field
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
# sage.doctest: needs sage.graphs sage.libs.gap
|
|
3
|
+
"""
|
|
4
|
+
Braid move calculator
|
|
5
|
+
|
|
6
|
+
AUTHORS:
|
|
7
|
+
|
|
8
|
+
- Dinakar Muthiah (2014-06-03): initial version
|
|
9
|
+
"""
|
|
10
|
+
# ****************************************************************************
|
|
11
|
+
# Copyright (C) 2014 Dinakar Muthiah <muthiah at ualberta.ca>
|
|
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
|
+
|
|
22
|
+
|
|
23
|
+
class BraidMoveCalculator:
|
|
24
|
+
"""
|
|
25
|
+
Helper class to compute braid moves.
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
def __init__(self, coxeter_group):
|
|
29
|
+
"""
|
|
30
|
+
Initialize ``self``.
|
|
31
|
+
|
|
32
|
+
EXAMPLES::
|
|
33
|
+
|
|
34
|
+
sage: from sage.combinat.root_system.braid_move_calculator import BraidMoveCalculator
|
|
35
|
+
sage: W = CoxeterGroup(['C',3])
|
|
36
|
+
sage: B = BraidMoveCalculator(W)
|
|
37
|
+
sage: TestSuite(B).run(skip='_test_pickling')
|
|
38
|
+
"""
|
|
39
|
+
self.coxeter_matrix = coxeter_group.coxeter_matrix()
|
|
40
|
+
|
|
41
|
+
def _apply_put_in_front_recur_step(self, k, input_word, coxeter_matrix_entry):
|
|
42
|
+
"""
|
|
43
|
+
Recurrence step for :meth:`put_in_front`.
|
|
44
|
+
|
|
45
|
+
EXAMPLES::
|
|
46
|
+
|
|
47
|
+
sage: from sage.combinat.root_system.braid_move_calculator import BraidMoveCalculator
|
|
48
|
+
sage: W = CoxeterGroup(['C',3])
|
|
49
|
+
sage: B = BraidMoveCalculator(W)
|
|
50
|
+
sage: B.put_in_front(2, (3, 2, 3, 1, 2, 3, 1, 2, 1)) # indirect doctest
|
|
51
|
+
((3, 2, 3, 1, 2, 3, 1, 2, 1),
|
|
52
|
+
(3, 2, 3, 1, 2, 1, 3, 2, 1),
|
|
53
|
+
(3, 2, 3, 2, 1, 2, 3, 2, 1),
|
|
54
|
+
(2, 3, 2, 3, 1, 2, 3, 2, 1))
|
|
55
|
+
"""
|
|
56
|
+
i = input_word[0]
|
|
57
|
+
|
|
58
|
+
def partial_braid_word(length, swap=False, i=i, k=k):
|
|
59
|
+
if swap:
|
|
60
|
+
i, k = k, i
|
|
61
|
+
running_braid_word = [i, k] * (length // 2)
|
|
62
|
+
if length % 2:
|
|
63
|
+
running_braid_word.append(i)
|
|
64
|
+
return tuple(running_braid_word)
|
|
65
|
+
|
|
66
|
+
current_last_word = input_word
|
|
67
|
+
current_first_letter = k
|
|
68
|
+
output_word_list = [current_last_word]
|
|
69
|
+
for counter in range(1, coxeter_matrix_entry):
|
|
70
|
+
current_word_list = self.put_in_front(current_first_letter, current_last_word[1:])
|
|
71
|
+
output_word_list += [partial_braid_word(counter) + word
|
|
72
|
+
for word in current_word_list[1:]]
|
|
73
|
+
if current_first_letter == k:
|
|
74
|
+
current_first_letter = i
|
|
75
|
+
else:
|
|
76
|
+
current_first_letter = k
|
|
77
|
+
current_last_word = current_word_list[-1]
|
|
78
|
+
if i != k:
|
|
79
|
+
output_word_list += [partial_braid_word(coxeter_matrix_entry, swap=True) +
|
|
80
|
+
current_last_word[1:]]
|
|
81
|
+
return tuple(output_word_list)
|
|
82
|
+
|
|
83
|
+
def put_in_front(self, k, input_word):
|
|
84
|
+
"""
|
|
85
|
+
Return a list of reduced words starting with ``input_word``
|
|
86
|
+
and ending with a reduced word whose first letter is ``k``.
|
|
87
|
+
|
|
88
|
+
There still remains an issue with 0 indices.
|
|
89
|
+
|
|
90
|
+
EXAMPLES::
|
|
91
|
+
|
|
92
|
+
sage: from sage.combinat.root_system.braid_move_calculator import BraidMoveCalculator
|
|
93
|
+
sage: W = CoxeterGroup(['C',3])
|
|
94
|
+
sage: B = BraidMoveCalculator(W)
|
|
95
|
+
sage: B.put_in_front(2, (3, 2, 3, 1, 2, 3, 1, 2, 1))
|
|
96
|
+
((3, 2, 3, 1, 2, 3, 1, 2, 1),
|
|
97
|
+
(3, 2, 3, 1, 2, 1, 3, 2, 1),
|
|
98
|
+
(3, 2, 3, 2, 1, 2, 3, 2, 1),
|
|
99
|
+
(2, 3, 2, 3, 1, 2, 3, 2, 1))
|
|
100
|
+
sage: B.put_in_front(1, (3, 2, 3, 1, 2, 3, 1, 2, 1))
|
|
101
|
+
((3, 2, 3, 1, 2, 3, 1, 2, 1),
|
|
102
|
+
(3, 2, 1, 3, 2, 3, 1, 2, 1),
|
|
103
|
+
(3, 2, 1, 3, 2, 3, 2, 1, 2),
|
|
104
|
+
(3, 2, 1, 2, 3, 2, 3, 1, 2),
|
|
105
|
+
(3, 1, 2, 1, 3, 2, 3, 1, 2),
|
|
106
|
+
(1, 3, 2, 1, 3, 2, 3, 1, 2))
|
|
107
|
+
sage: B.put_in_front(1, (1, 3, 2, 3, 2, 1, 2, 3, 2))
|
|
108
|
+
((1, 3, 2, 3, 2, 1, 2, 3, 2),)
|
|
109
|
+
"""
|
|
110
|
+
i = input_word[0]
|
|
111
|
+
if i == 0 or k == 0: # Is this for affine types? - Travis
|
|
112
|
+
raise NotImplementedError
|
|
113
|
+
entry = self.coxeter_matrix[i, k]
|
|
114
|
+
return self._apply_put_in_front_recur_step(k, input_word, entry)
|
|
115
|
+
|
|
116
|
+
@cached_method
|
|
117
|
+
def chain_of_reduced_words(self, start_word, end_word):
|
|
118
|
+
"""
|
|
119
|
+
Compute the chain of reduced words from ``stard_word``
|
|
120
|
+
to ``end_word``.
|
|
121
|
+
|
|
122
|
+
INPUT:
|
|
123
|
+
|
|
124
|
+
- ``start_word``, ``end_word`` -- two reduced expressions
|
|
125
|
+
for the long word
|
|
126
|
+
|
|
127
|
+
EXAMPLES::
|
|
128
|
+
|
|
129
|
+
sage: from sage.combinat.root_system.braid_move_calculator import BraidMoveCalculator
|
|
130
|
+
sage: W = CoxeterGroup(['A',5])
|
|
131
|
+
sage: B = BraidMoveCalculator(W)
|
|
132
|
+
sage: B.chain_of_reduced_words((1,2,1,3,2,1,4,3,2,1,5,4,3,2,1), # not tested
|
|
133
|
+
....: (5,4,5,3,4,5,2,3,4,5,1,2,3,4,5))
|
|
134
|
+
"""
|
|
135
|
+
if start_word == end_word:
|
|
136
|
+
return (start_word,)
|
|
137
|
+
k = end_word[0]
|
|
138
|
+
first_word_list = self.put_in_front(k, start_word)
|
|
139
|
+
first_last_word = first_word_list[-1]
|
|
140
|
+
return (first_word_list[:-1] +
|
|
141
|
+
tuple([(k,) + word for word in
|
|
142
|
+
self.chain_of_reduced_words(first_last_word[1:],
|
|
143
|
+
end_word[1:])]))
|
|
Binary file
|