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,795 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
# sage.doctest: needs sage.graphs sage.groups
|
|
3
|
+
r"""
|
|
4
|
+
Fundamental group of an extended affine Weyl group
|
|
5
|
+
|
|
6
|
+
AUTHORS:
|
|
7
|
+
|
|
8
|
+
- Mark Shimozono (2013) initial version
|
|
9
|
+
"""
|
|
10
|
+
# ****************************************************************************
|
|
11
|
+
# Copyright (C) 2013 Mark Shimozono <mshimo at math.vt.edu>
|
|
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
|
+
from sage.combinat.root_system.cartan_type import CartanType
|
|
20
|
+
from sage.categories.groups import Groups
|
|
21
|
+
from sage.misc.cachefunc import cached_method
|
|
22
|
+
from sage.structure.element import MultiplicativeGroupElement
|
|
23
|
+
from sage.structure.parent import Parent
|
|
24
|
+
from sage.structure.richcmp import richcmp
|
|
25
|
+
from sage.structure.unique_representation import UniqueRepresentation
|
|
26
|
+
from sage.sets.family import Family
|
|
27
|
+
from sage.combinat.root_system.root_system import RootSystem
|
|
28
|
+
from sage.categories.category import Category
|
|
29
|
+
from sage.categories.enumerated_sets import EnumeratedSets
|
|
30
|
+
from sage.rings.integer_ring import ZZ
|
|
31
|
+
from sage.sets.family import LazyFamily
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def FundamentalGroupOfExtendedAffineWeylGroup(cartan_type, prefix='pi',
|
|
35
|
+
general_linear=None):
|
|
36
|
+
r"""
|
|
37
|
+
Factory for the fundamental group of an extended affine Weyl group.
|
|
38
|
+
|
|
39
|
+
INPUT:
|
|
40
|
+
|
|
41
|
+
- ``cartan_type`` -- a Cartan type that is either affine or finite, with the latter being a
|
|
42
|
+
shorthand for the untwisted affinization
|
|
43
|
+
- ``prefix`` -- (default: ``'pi'``) string that labels the elements of the group
|
|
44
|
+
- ``general_linear`` -- (default: ``None``, meaning ``False``) In untwisted
|
|
45
|
+
type `A`, if ``True``, use the universal central extension
|
|
46
|
+
|
|
47
|
+
.. RUBRIC:: Fundamental group
|
|
48
|
+
|
|
49
|
+
Associated to each affine Cartan type `\tilde{X}` is an extended affine Weyl group `E`.
|
|
50
|
+
Its subgroup of length-zero elements is called the fundamental group `F`.
|
|
51
|
+
The group `F` can be identified with a subgroup of the group of automorphisms of the
|
|
52
|
+
affine Dynkin diagram. As such, every element of `F` can be viewed as a permutation of the
|
|
53
|
+
set `I` of affine Dynkin nodes.
|
|
54
|
+
|
|
55
|
+
Let `0 \in I` be the distinguished affine node; it is the one whose removal produces the
|
|
56
|
+
associated finite Cartan type (call it `X`). A node `i \in I` is called *special*
|
|
57
|
+
if some automorphism of the affine Dynkin diagram, sends `0` to `i`.
|
|
58
|
+
The node `0` is always special due to the identity automorphism.
|
|
59
|
+
There is a bijection of the set of special nodes with the fundamental group. We denote the
|
|
60
|
+
image of `i` by `\pi_i`. The structure of `F` is determined as follows.
|
|
61
|
+
|
|
62
|
+
- `\tilde{X}` is untwisted -- `F` is isomorphic to `P^\vee/Q^\vee` where `P^\vee` and `Q^\vee` are the
|
|
63
|
+
coweight and coroot lattices of type `X`. The group `P^\vee/Q^\vee` consists of the cosets `\omega_i^\vee + Q^\vee`
|
|
64
|
+
for special nodes `i`, where `\omega_0^\vee = 0` by convention. In this case the special nodes `i`
|
|
65
|
+
are the *cominuscule* nodes, the ones such that `\omega_i^\vee(\alpha_j)` is `0` or `1` for all `j\in I_0 = I \setminus \{0\}`.
|
|
66
|
+
For `i` special, addition by `\omega_i^\vee+Q^\vee` permutes `P^\vee/Q^\vee` and therefore permutes the set of special nodes.
|
|
67
|
+
This permutation extends uniquely to an automorphism of the affine Dynkin diagram.
|
|
68
|
+
- `\tilde{X}` is dual untwisted -- (that is, the dual of `\tilde{X}` is untwisted) `F` is isomorphic to `P/Q`
|
|
69
|
+
where `P` and `Q` are the weight and root lattices of type `X`. The group `P/Q` consists of the cosets
|
|
70
|
+
`\omega_i + Q` for special nodes `i`, where `\omega_0 = 0` by convention. In this case the special nodes `i`
|
|
71
|
+
are the *minuscule* nodes, the ones such that `\alpha_j^\vee(\omega_i)` is `0` or `1` for all `j \in I_0`.
|
|
72
|
+
For `i` special, addition by `\omega_i+Q` permutes `P/Q` and therefore permutes the set of special nodes.
|
|
73
|
+
This permutation extends uniquely to an automorphism of the affine Dynkin diagram.
|
|
74
|
+
- `\tilde{X}` is mixed -- (that is, not of the above two types) `F` is the trivial group.
|
|
75
|
+
|
|
76
|
+
EXAMPLES::
|
|
77
|
+
|
|
78
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
79
|
+
sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',3,1]); F
|
|
80
|
+
Fundamental group of type ['A', 3, 1]
|
|
81
|
+
sage: F.cartan_type().dynkin_diagram()
|
|
82
|
+
0
|
|
83
|
+
O-------+
|
|
84
|
+
| |
|
|
85
|
+
| |
|
|
86
|
+
O---O---O
|
|
87
|
+
1 2 3
|
|
88
|
+
A3~
|
|
89
|
+
sage: F.special_nodes()
|
|
90
|
+
(0, 1, 2, 3)
|
|
91
|
+
sage: F(1)^2
|
|
92
|
+
pi[2]
|
|
93
|
+
sage: F(1)*F(2)
|
|
94
|
+
pi[3]
|
|
95
|
+
sage: F(3)^(-1)
|
|
96
|
+
pi[1]
|
|
97
|
+
|
|
98
|
+
sage: F = FundamentalGroupOfExtendedAffineWeylGroup("B3"); F
|
|
99
|
+
Fundamental group of type ['B', 3, 1]
|
|
100
|
+
sage: F.cartan_type().dynkin_diagram()
|
|
101
|
+
O 0
|
|
102
|
+
|
|
|
103
|
+
|
|
|
104
|
+
O---O=>=O
|
|
105
|
+
1 2 3
|
|
106
|
+
B3~
|
|
107
|
+
sage: F.special_nodes()
|
|
108
|
+
(0, 1)
|
|
109
|
+
|
|
110
|
+
sage: F = FundamentalGroupOfExtendedAffineWeylGroup("C2"); F
|
|
111
|
+
Fundamental group of type ['C', 2, 1]
|
|
112
|
+
sage: F.cartan_type().dynkin_diagram()
|
|
113
|
+
O=>=O=<=O
|
|
114
|
+
0 1 2
|
|
115
|
+
C2~
|
|
116
|
+
sage: F.special_nodes()
|
|
117
|
+
(0, 2)
|
|
118
|
+
|
|
119
|
+
sage: F = FundamentalGroupOfExtendedAffineWeylGroup("D4"); F
|
|
120
|
+
Fundamental group of type ['D', 4, 1]
|
|
121
|
+
sage: F.cartan_type().dynkin_diagram()
|
|
122
|
+
O 4
|
|
123
|
+
|
|
|
124
|
+
|
|
|
125
|
+
O---O---O
|
|
126
|
+
1 |2 3
|
|
127
|
+
|
|
|
128
|
+
O 0
|
|
129
|
+
D4~
|
|
130
|
+
sage: F.special_nodes()
|
|
131
|
+
(0, 1, 3, 4)
|
|
132
|
+
sage: (F(4), F(4)^2)
|
|
133
|
+
(pi[4], pi[0])
|
|
134
|
+
|
|
135
|
+
sage: F = FundamentalGroupOfExtendedAffineWeylGroup("D5"); F
|
|
136
|
+
Fundamental group of type ['D', 5, 1]
|
|
137
|
+
sage: F.cartan_type().dynkin_diagram()
|
|
138
|
+
0 O O 5
|
|
139
|
+
| |
|
|
140
|
+
| |
|
|
141
|
+
O---O---O---O
|
|
142
|
+
1 2 3 4
|
|
143
|
+
D5~
|
|
144
|
+
sage: F.special_nodes()
|
|
145
|
+
(0, 1, 4, 5)
|
|
146
|
+
sage: (F(5), F(5)^2, F(5)^3, F(5)^4)
|
|
147
|
+
(pi[5], pi[1], pi[4], pi[0])
|
|
148
|
+
sage: F = FundamentalGroupOfExtendedAffineWeylGroup("E6"); F
|
|
149
|
+
Fundamental group of type ['E', 6, 1]
|
|
150
|
+
sage: F.cartan_type().dynkin_diagram()
|
|
151
|
+
O 0
|
|
152
|
+
|
|
|
153
|
+
|
|
|
154
|
+
O 2
|
|
155
|
+
|
|
|
156
|
+
|
|
|
157
|
+
O---O---O---O---O
|
|
158
|
+
1 3 4 5 6
|
|
159
|
+
E6~
|
|
160
|
+
sage: F.special_nodes()
|
|
161
|
+
(0, 1, 6)
|
|
162
|
+
sage: F(1)^2
|
|
163
|
+
pi[6]
|
|
164
|
+
|
|
165
|
+
sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['D',4,2]); F
|
|
166
|
+
Fundamental group of type ['C', 3, 1]^*
|
|
167
|
+
sage: F.cartan_type().dynkin_diagram()
|
|
168
|
+
O=<=O---O=>=O
|
|
169
|
+
0 1 2 3
|
|
170
|
+
C3~*
|
|
171
|
+
sage: F.special_nodes()
|
|
172
|
+
(0, 3)
|
|
173
|
+
|
|
174
|
+
We also implement a fundamental group for `GL_n`. It is defined to be the group of integers, which is the
|
|
175
|
+
covering group of the fundamental group Z/nZ for affine `SL_n`::
|
|
176
|
+
|
|
177
|
+
sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True); F
|
|
178
|
+
Fundamental group of GL(3)
|
|
179
|
+
sage: x = F.an_element(); x
|
|
180
|
+
pi[5]
|
|
181
|
+
sage: x*x
|
|
182
|
+
pi[10]
|
|
183
|
+
sage: x.inverse()
|
|
184
|
+
pi[-5]
|
|
185
|
+
sage: wt = F.cartan_type().classical().root_system().ambient_space().an_element(); wt
|
|
186
|
+
(2, 2, 3)
|
|
187
|
+
sage: x.act_on_classical_ambient(wt)
|
|
188
|
+
(2, 3, 2)
|
|
189
|
+
sage: w = WeylGroup(F.cartan_type(),prefix='s').an_element(); w
|
|
190
|
+
s0*s1*s2
|
|
191
|
+
sage: x.act_on_affine_weyl(w)
|
|
192
|
+
s2*s0*s1
|
|
193
|
+
"""
|
|
194
|
+
cartan_type = CartanType(cartan_type)
|
|
195
|
+
if cartan_type.is_finite():
|
|
196
|
+
cartan_type = cartan_type.affine()
|
|
197
|
+
if not cartan_type.is_affine():
|
|
198
|
+
raise NotImplementedError("Cartan type is not affine")
|
|
199
|
+
if general_linear is True:
|
|
200
|
+
if cartan_type.is_untwisted_affine() and cartan_type.type() == "A":
|
|
201
|
+
return FundamentalGroupGL(cartan_type, prefix)
|
|
202
|
+
else:
|
|
203
|
+
raise ValueError("General Linear Fundamental group is untwisted type A")
|
|
204
|
+
return FundamentalGroupOfExtendedAffineWeylGroup_Class(cartan_type, prefix,
|
|
205
|
+
finite=True)
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
class FundamentalGroupElement(MultiplicativeGroupElement):
|
|
209
|
+
def __init__(self, parent, x):
|
|
210
|
+
r"""
|
|
211
|
+
This should not be called directly.
|
|
212
|
+
|
|
213
|
+
EXAMPLES::
|
|
214
|
+
|
|
215
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
216
|
+
sage: x = FundamentalGroupOfExtendedAffineWeylGroup(['A',4,1], prefix='f').an_element()
|
|
217
|
+
sage: TestSuite(x).run()
|
|
218
|
+
"""
|
|
219
|
+
if x not in parent.special_nodes():
|
|
220
|
+
raise ValueError("%s is not a special node" % x)
|
|
221
|
+
self._value = x
|
|
222
|
+
MultiplicativeGroupElement.__init__(self, parent)
|
|
223
|
+
|
|
224
|
+
def value(self):
|
|
225
|
+
r"""
|
|
226
|
+
Return the special node which indexes the special automorphism ``self``.
|
|
227
|
+
|
|
228
|
+
EXAMPLES::
|
|
229
|
+
|
|
230
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
231
|
+
sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',4,1], prefix='f')
|
|
232
|
+
sage: F.special_nodes()
|
|
233
|
+
(0, 1, 2, 3, 4)
|
|
234
|
+
sage: x = F(4); x
|
|
235
|
+
f[4]
|
|
236
|
+
sage: x.value()
|
|
237
|
+
4
|
|
238
|
+
"""
|
|
239
|
+
return self._value
|
|
240
|
+
|
|
241
|
+
def _repr_(self):
|
|
242
|
+
r"""
|
|
243
|
+
Return a string representing ``self``.
|
|
244
|
+
|
|
245
|
+
EXAMPLES::
|
|
246
|
+
|
|
247
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
248
|
+
sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',4,1], prefix='f')
|
|
249
|
+
sage: F(2)^3 # indirect doctest
|
|
250
|
+
f[1]
|
|
251
|
+
"""
|
|
252
|
+
return self.parent()._prefix + "[" + repr(self.value()) + "]"
|
|
253
|
+
|
|
254
|
+
def __invert__(self):
|
|
255
|
+
r"""
|
|
256
|
+
Return the inverse element of ``self``.
|
|
257
|
+
|
|
258
|
+
EXAMPLES::
|
|
259
|
+
|
|
260
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
261
|
+
sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',3,1])
|
|
262
|
+
sage: F(1).inverse() # indirect doctest
|
|
263
|
+
pi[3]
|
|
264
|
+
sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['E',6,1], prefix='f')
|
|
265
|
+
sage: F(1).inverse()
|
|
266
|
+
f[6]
|
|
267
|
+
"""
|
|
268
|
+
par = self.parent()
|
|
269
|
+
return self.__class__(par, par.dual_node(self.value()))
|
|
270
|
+
|
|
271
|
+
def _richcmp_(self, x, op):
|
|
272
|
+
r"""
|
|
273
|
+
Compare ``self`` with `x`.
|
|
274
|
+
|
|
275
|
+
EXAMPLES::
|
|
276
|
+
|
|
277
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
278
|
+
sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',3,1])
|
|
279
|
+
sage: x = F(0); y = F(2)
|
|
280
|
+
sage: y > x
|
|
281
|
+
True
|
|
282
|
+
sage: y == y
|
|
283
|
+
True
|
|
284
|
+
sage: y != y
|
|
285
|
+
False
|
|
286
|
+
sage: x <= y
|
|
287
|
+
True
|
|
288
|
+
"""
|
|
289
|
+
return richcmp(self.value(), x.value(), op)
|
|
290
|
+
|
|
291
|
+
def act_on_affine_weyl(self, w):
|
|
292
|
+
r"""
|
|
293
|
+
Act by ``self`` on the element `w` of the affine Weyl group.
|
|
294
|
+
|
|
295
|
+
EXAMPLES::
|
|
296
|
+
|
|
297
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
298
|
+
sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',3,1])
|
|
299
|
+
sage: W = WeylGroup(F.cartan_type(),prefix='s')
|
|
300
|
+
sage: w = W.from_reduced_word([2,3,0])
|
|
301
|
+
sage: F(1).act_on_affine_weyl(w).reduced_word()
|
|
302
|
+
[3, 0, 1]
|
|
303
|
+
"""
|
|
304
|
+
par = self.parent()
|
|
305
|
+
if self == par.one():
|
|
306
|
+
return w
|
|
307
|
+
action = par.action(self.value())
|
|
308
|
+
return w.parent().from_reduced_word([action(j) for j in w.reduced_word()])
|
|
309
|
+
|
|
310
|
+
def act_on_affine_lattice(self, wt):
|
|
311
|
+
r"""
|
|
312
|
+
Act by ``self`` on the element ``wt`` of an affine root/weight lattice realization.
|
|
313
|
+
|
|
314
|
+
EXAMPLES::
|
|
315
|
+
|
|
316
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
317
|
+
sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',3,1])
|
|
318
|
+
sage: wt = RootSystem(F.cartan_type()).weight_lattice().an_element(); wt
|
|
319
|
+
2*Lambda[0] + 2*Lambda[1] + 3*Lambda[2]
|
|
320
|
+
sage: F(3).act_on_affine_lattice(wt)
|
|
321
|
+
2*Lambda[0] + 3*Lambda[1] + 2*Lambda[3]
|
|
322
|
+
|
|
323
|
+
.. WARNING::
|
|
324
|
+
|
|
325
|
+
Doesn't work on ambient spaces.
|
|
326
|
+
"""
|
|
327
|
+
return wt.map_support(self.parent().action(self.value()))
|
|
328
|
+
|
|
329
|
+
def __hash__(self):
|
|
330
|
+
r"""
|
|
331
|
+
Return the hash of ``self``.
|
|
332
|
+
|
|
333
|
+
TESTS:
|
|
334
|
+
|
|
335
|
+
Check that :issue:`36121` is fixed::
|
|
336
|
+
|
|
337
|
+
sage: W = ExtendedAffineWeylGroup('A4')
|
|
338
|
+
sage: fun = W.fundamental_group().an_element()
|
|
339
|
+
sage: hash(fun) == hash(fun.value())
|
|
340
|
+
True
|
|
341
|
+
"""
|
|
342
|
+
return hash(self.value())
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
class FundamentalGroupOfExtendedAffineWeylGroup_Class(UniqueRepresentation,
|
|
346
|
+
Parent):
|
|
347
|
+
r"""
|
|
348
|
+
The group of length zero elements in the extended affine Weyl group.
|
|
349
|
+
"""
|
|
350
|
+
Element = FundamentalGroupElement
|
|
351
|
+
|
|
352
|
+
def __init__(self, cartan_type, prefix, finite=True):
|
|
353
|
+
r"""
|
|
354
|
+
|
|
355
|
+
EXAMPLES::
|
|
356
|
+
|
|
357
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
358
|
+
sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',3,1])
|
|
359
|
+
sage: F in Groups().Commutative().Finite()
|
|
360
|
+
True
|
|
361
|
+
sage: TestSuite(F).run()
|
|
362
|
+
"""
|
|
363
|
+
def leading_support(beta):
|
|
364
|
+
r"""
|
|
365
|
+
Given a dictionary with one key, return this key
|
|
366
|
+
"""
|
|
367
|
+
supp = beta.support()
|
|
368
|
+
assert len(supp) == 1
|
|
369
|
+
return supp[0]
|
|
370
|
+
|
|
371
|
+
self._cartan_type = cartan_type
|
|
372
|
+
self._prefix = prefix
|
|
373
|
+
special_node = cartan_type.special_node()
|
|
374
|
+
self._special_nodes = cartan_type.special_nodes()
|
|
375
|
+
|
|
376
|
+
# initialize dictionaries with the entries for the
|
|
377
|
+
# distinguished special node
|
|
378
|
+
|
|
379
|
+
# dictionary of inverse elements
|
|
380
|
+
inverse_dict = {}
|
|
381
|
+
inverse_dict[special_node] = special_node
|
|
382
|
+
# dictionary for the action of special automorphisms by
|
|
383
|
+
# permutations of the affine Dynkin nodes
|
|
384
|
+
auto_dict = {}
|
|
385
|
+
for i in cartan_type.index_set():
|
|
386
|
+
auto_dict[special_node,i] = i
|
|
387
|
+
# dictionary for the finite Weyl component of the special automorphisms
|
|
388
|
+
reduced_words_dict = {}
|
|
389
|
+
reduced_words_dict[0] = tuple()
|
|
390
|
+
|
|
391
|
+
if cartan_type.dual().is_untwisted_affine():
|
|
392
|
+
# this combines the computations for an untwisted affine
|
|
393
|
+
# type and its affine dual
|
|
394
|
+
cartan_type = cartan_type.dual()
|
|
395
|
+
if cartan_type.is_untwisted_affine():
|
|
396
|
+
cartan_type_classical = cartan_type.classical()
|
|
397
|
+
I = list(cartan_type_classical.index_set())
|
|
398
|
+
Q = RootSystem(cartan_type_classical).root_lattice()
|
|
399
|
+
alpha = Q.simple_roots()
|
|
400
|
+
omega = RootSystem(cartan_type_classical).weight_lattice().fundamental_weights()
|
|
401
|
+
W = Q.weyl_group(prefix='s')
|
|
402
|
+
for i in self._special_nodes:
|
|
403
|
+
if i == special_node:
|
|
404
|
+
continue
|
|
405
|
+
antidominant_weight, reduced_word = omega[i].to_dominant_chamber(reduced_word=True, positive=False)
|
|
406
|
+
reduced_words_dict[i] = tuple(reduced_word)
|
|
407
|
+
w0i = W.from_reduced_word(reduced_word)
|
|
408
|
+
idual = leading_support(-antidominant_weight)
|
|
409
|
+
inverse_dict[i] = idual
|
|
410
|
+
auto_dict[i,special_node] = i
|
|
411
|
+
for j in I:
|
|
412
|
+
if j == idual:
|
|
413
|
+
auto_dict[i, j] = special_node
|
|
414
|
+
else:
|
|
415
|
+
auto_dict[i, j] = leading_support(w0i.action(alpha[j]))
|
|
416
|
+
|
|
417
|
+
self._action = Family(self._special_nodes, lambda i: Family(cartan_type.index_set(), lambda j: auto_dict[i, j]))
|
|
418
|
+
self._dual_node = Family(self._special_nodes, inverse_dict.__getitem__)
|
|
419
|
+
self._reduced_words = Family(self._special_nodes, reduced_words_dict.__getitem__)
|
|
420
|
+
|
|
421
|
+
if finite:
|
|
422
|
+
cat = Category.join((Groups().Commutative().Finite(),
|
|
423
|
+
EnumeratedSets()))
|
|
424
|
+
else:
|
|
425
|
+
cat = Groups().Commutative().Infinite()
|
|
426
|
+
Parent.__init__(self, category=cat)
|
|
427
|
+
|
|
428
|
+
@cached_method
|
|
429
|
+
def one(self):
|
|
430
|
+
r"""
|
|
431
|
+
Return the identity element of the fundamental group.
|
|
432
|
+
|
|
433
|
+
EXAMPLES::
|
|
434
|
+
|
|
435
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
436
|
+
sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',3,1])
|
|
437
|
+
sage: F.one()
|
|
438
|
+
pi[0]
|
|
439
|
+
"""
|
|
440
|
+
return self(self.cartan_type().special_node())
|
|
441
|
+
|
|
442
|
+
def product(self, x, y):
|
|
443
|
+
r"""
|
|
444
|
+
Return the product of `x` and `y`.
|
|
445
|
+
|
|
446
|
+
EXAMPLES::
|
|
447
|
+
|
|
448
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
449
|
+
sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',3,1])
|
|
450
|
+
sage: F.special_nodes()
|
|
451
|
+
(0, 1, 2, 3)
|
|
452
|
+
sage: F(2)*F(3)
|
|
453
|
+
pi[1]
|
|
454
|
+
sage: F(1)*F(3)^(-1)
|
|
455
|
+
pi[2]
|
|
456
|
+
"""
|
|
457
|
+
return self(self.action(x.value())(y.value()))
|
|
458
|
+
|
|
459
|
+
def cartan_type(self):
|
|
460
|
+
r"""
|
|
461
|
+
The Cartan type of ``self``.
|
|
462
|
+
|
|
463
|
+
EXAMPLES::
|
|
464
|
+
|
|
465
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
466
|
+
sage: FundamentalGroupOfExtendedAffineWeylGroup(['A',3,1]).cartan_type()
|
|
467
|
+
['A', 3, 1]
|
|
468
|
+
"""
|
|
469
|
+
return self._cartan_type
|
|
470
|
+
|
|
471
|
+
def _repr_(self):
|
|
472
|
+
r"""
|
|
473
|
+
A string representing ``self``.
|
|
474
|
+
|
|
475
|
+
EXAMPLES::
|
|
476
|
+
|
|
477
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
478
|
+
sage: FundamentalGroupOfExtendedAffineWeylGroup(['A',3,1]) # indirect doctest
|
|
479
|
+
Fundamental group of type ['A', 3, 1]
|
|
480
|
+
"""
|
|
481
|
+
return "Fundamental group of type %s" % self.cartan_type()
|
|
482
|
+
|
|
483
|
+
def special_nodes(self):
|
|
484
|
+
r"""
|
|
485
|
+
Return the special nodes of ``self``.
|
|
486
|
+
|
|
487
|
+
See :meth:`sage.combinat.root_system.cartan_type.special_nodes()`.
|
|
488
|
+
|
|
489
|
+
EXAMPLES::
|
|
490
|
+
|
|
491
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
492
|
+
sage: FundamentalGroupOfExtendedAffineWeylGroup(['D',4,1]).special_nodes()
|
|
493
|
+
(0, 1, 3, 4)
|
|
494
|
+
sage: FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1]).special_nodes()
|
|
495
|
+
(0, 1, 2)
|
|
496
|
+
sage: FundamentalGroupOfExtendedAffineWeylGroup(['C',3,1]).special_nodes()
|
|
497
|
+
(0, 3)
|
|
498
|
+
sage: FundamentalGroupOfExtendedAffineWeylGroup(['D',4,2]).special_nodes()
|
|
499
|
+
(0, 3)
|
|
500
|
+
sage: FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True).special_nodes()
|
|
501
|
+
Integer Ring
|
|
502
|
+
"""
|
|
503
|
+
return self._special_nodes
|
|
504
|
+
|
|
505
|
+
def group_generators(self):
|
|
506
|
+
r"""
|
|
507
|
+
Return a tuple of generators of the fundamental group.
|
|
508
|
+
|
|
509
|
+
.. WARNING::
|
|
510
|
+
|
|
511
|
+
This returns the entire group, a necessary behavior because it
|
|
512
|
+
is used in :meth:`__iter__`.
|
|
513
|
+
|
|
514
|
+
EXAMPLES::
|
|
515
|
+
|
|
516
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
517
|
+
sage: FundamentalGroupOfExtendedAffineWeylGroup(['E',6,1],prefix='f').group_generators()
|
|
518
|
+
Finite family {0: f[0], 1: f[1], 6: f[6]}
|
|
519
|
+
"""
|
|
520
|
+
return Family(self.special_nodes(), self)
|
|
521
|
+
|
|
522
|
+
def __iter__(self):
|
|
523
|
+
r"""
|
|
524
|
+
Return the iterator for ``self``.
|
|
525
|
+
|
|
526
|
+
EXAMPLES::
|
|
527
|
+
|
|
528
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
529
|
+
sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['E',6,1],prefix='f')
|
|
530
|
+
sage: [x for x in F] # indirect doctest
|
|
531
|
+
[f[0], f[1], f[6]]
|
|
532
|
+
"""
|
|
533
|
+
return iter(self.group_generators())
|
|
534
|
+
|
|
535
|
+
def _an_element_(self):
|
|
536
|
+
r"""
|
|
537
|
+
Return an element of ``self``.
|
|
538
|
+
|
|
539
|
+
EXAMPLES::
|
|
540
|
+
|
|
541
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
542
|
+
sage: FundamentalGroupOfExtendedAffineWeylGroup(['A',4,1],prefix='f').an_element()
|
|
543
|
+
f[4]
|
|
544
|
+
"""
|
|
545
|
+
return self.last()
|
|
546
|
+
|
|
547
|
+
@cached_method
|
|
548
|
+
def index_set(self):
|
|
549
|
+
r"""
|
|
550
|
+
The node set of the affine Cartan type of ``self``.
|
|
551
|
+
|
|
552
|
+
EXAMPLES::
|
|
553
|
+
|
|
554
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
555
|
+
sage: FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1]).index_set()
|
|
556
|
+
(0, 1, 2)
|
|
557
|
+
"""
|
|
558
|
+
return self.cartan_type().index_set()
|
|
559
|
+
|
|
560
|
+
def action(self, i):
|
|
561
|
+
r"""
|
|
562
|
+
Return a function which permutes the affine Dynkin node set by the `i`-th special automorphism.
|
|
563
|
+
|
|
564
|
+
EXAMPLES::
|
|
565
|
+
|
|
566
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
567
|
+
sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1])
|
|
568
|
+
sage: [[(i, j, F.action(i)(j)) for j in F.index_set()] for i in F.special_nodes()]
|
|
569
|
+
[[(0, 0, 0), (0, 1, 1), (0, 2, 2)], [(1, 0, 1), (1, 1, 2), (1, 2, 0)], [(2, 0, 2), (2, 1, 0), (2, 2, 1)]]
|
|
570
|
+
sage: G = FundamentalGroupOfExtendedAffineWeylGroup(['D',4,1])
|
|
571
|
+
sage: [[(i, j, G.action(i)(j)) for j in G.index_set()] for i in G.special_nodes()]
|
|
572
|
+
[[(0, 0, 0), (0, 1, 1), (0, 2, 2), (0, 3, 3), (0, 4, 4)], [(1, 0, 1), (1, 1, 0), (1, 2, 2), (1, 3, 4), (1, 4, 3)], [(3, 0, 3), (3, 1, 4), (3, 2, 2), (3, 3, 0), (3, 4, 1)], [(4, 0, 4), (4, 1, 3), (4, 2, 2), (4, 3, 1), (4, 4, 0)]]
|
|
573
|
+
"""
|
|
574
|
+
return lambda j: self._action[i][j]
|
|
575
|
+
|
|
576
|
+
def dual_node(self, i):
|
|
577
|
+
r"""
|
|
578
|
+
Return the node that indexes the inverse of the `i`-th element.
|
|
579
|
+
|
|
580
|
+
EXAMPLES::
|
|
581
|
+
|
|
582
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
583
|
+
sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',4,1])
|
|
584
|
+
sage: [(i, F.dual_node(i)) for i in F.special_nodes()]
|
|
585
|
+
[(0, 0), (1, 4), (2, 3), (3, 2), (4, 1)]
|
|
586
|
+
sage: G = FundamentalGroupOfExtendedAffineWeylGroup(['E',6,1])
|
|
587
|
+
sage: [(i, G.dual_node(i)) for i in G.special_nodes()]
|
|
588
|
+
[(0, 0), (1, 6), (6, 1)]
|
|
589
|
+
sage: H = FundamentalGroupOfExtendedAffineWeylGroup(['D',5,1])
|
|
590
|
+
sage: [(i, H.dual_node(i)) for i in H.special_nodes()]
|
|
591
|
+
[(0, 0), (1, 1), (4, 5), (5, 4)]
|
|
592
|
+
"""
|
|
593
|
+
return self._dual_node[i]
|
|
594
|
+
|
|
595
|
+
def reduced_word(self, i):
|
|
596
|
+
r"""
|
|
597
|
+
Return a reduced word for the finite Weyl group element associated with the `i`-th special automorphism.
|
|
598
|
+
|
|
599
|
+
More precisely, for each special node `i`, ``self.reduced_word(i)`` is a reduced word for
|
|
600
|
+
the element `v` in the finite Weyl group such that in the extended affine Weyl group,
|
|
601
|
+
the `i`-th special automorphism is equal to `t v` where `t` is a translation element.
|
|
602
|
+
|
|
603
|
+
EXAMPLES::
|
|
604
|
+
|
|
605
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
606
|
+
sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',3,1])
|
|
607
|
+
sage: [(i, F.reduced_word(i)) for i in F.special_nodes()]
|
|
608
|
+
[(0, ()), (1, (1, 2, 3)), (2, (2, 1, 3, 2)), (3, (3, 2, 1))]
|
|
609
|
+
"""
|
|
610
|
+
return self._reduced_words[i]
|
|
611
|
+
|
|
612
|
+
|
|
613
|
+
class FundamentalGroupGLElement(FundamentalGroupElement):
|
|
614
|
+
def act_on_classical_ambient(self, wt):
|
|
615
|
+
r"""
|
|
616
|
+
Act by ``self`` on the classical ambient weight vector ``wt``.
|
|
617
|
+
|
|
618
|
+
EXAMPLES::
|
|
619
|
+
|
|
620
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
621
|
+
sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True)
|
|
622
|
+
sage: f = F.an_element(); f
|
|
623
|
+
pi[5]
|
|
624
|
+
sage: la = F.cartan_type().classical().root_system().ambient_space().an_element(); la
|
|
625
|
+
(2, 2, 3)
|
|
626
|
+
sage: f.act_on_classical_ambient(la)
|
|
627
|
+
(2, 3, 2)
|
|
628
|
+
"""
|
|
629
|
+
return wt.map_support(self.parent().action(self.value()))
|
|
630
|
+
|
|
631
|
+
|
|
632
|
+
class FundamentalGroupGL(FundamentalGroupOfExtendedAffineWeylGroup_Class):
|
|
633
|
+
r"""
|
|
634
|
+
Fundamental group of `GL_n`. It is just the integers with extra privileges.
|
|
635
|
+
"""
|
|
636
|
+
Element = FundamentalGroupGLElement
|
|
637
|
+
|
|
638
|
+
def __init__(self, cartan_type, prefix='pi'):
|
|
639
|
+
r"""
|
|
640
|
+
|
|
641
|
+
EXAMPLES::
|
|
642
|
+
|
|
643
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
644
|
+
sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True)
|
|
645
|
+
sage: F in Groups().Commutative().Infinite()
|
|
646
|
+
True
|
|
647
|
+
sage: TestSuite(F).run()
|
|
648
|
+
"""
|
|
649
|
+
FundamentalGroupOfExtendedAffineWeylGroup_Class.__init__(self, cartan_type, prefix, finite=False)
|
|
650
|
+
self._special_nodes = ZZ
|
|
651
|
+
self._n = cartan_type.n + 1
|
|
652
|
+
|
|
653
|
+
@cached_method
|
|
654
|
+
def one(self):
|
|
655
|
+
r"""
|
|
656
|
+
Return the identity element of the fundamental group.
|
|
657
|
+
|
|
658
|
+
EXAMPLES::
|
|
659
|
+
|
|
660
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
661
|
+
sage: FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True).one()
|
|
662
|
+
pi[0]
|
|
663
|
+
"""
|
|
664
|
+
return self(ZZ.zero())
|
|
665
|
+
|
|
666
|
+
def product(self, x, y):
|
|
667
|
+
r"""
|
|
668
|
+
Return the product of `x` and `y`.
|
|
669
|
+
|
|
670
|
+
EXAMPLES::
|
|
671
|
+
|
|
672
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
673
|
+
sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True)
|
|
674
|
+
sage: F.special_nodes()
|
|
675
|
+
Integer Ring
|
|
676
|
+
sage: F(2)*F(3)
|
|
677
|
+
pi[5]
|
|
678
|
+
sage: F(1)*F(3)^(-1)
|
|
679
|
+
pi[-2]
|
|
680
|
+
"""
|
|
681
|
+
return self(x.value() + y.value())
|
|
682
|
+
|
|
683
|
+
def _repr_(self):
|
|
684
|
+
r"""
|
|
685
|
+
Return a string representing the fundamental group.
|
|
686
|
+
|
|
687
|
+
EXAMPLES::
|
|
688
|
+
|
|
689
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
690
|
+
sage: FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True) # indirect doctest
|
|
691
|
+
Fundamental group of GL(3)
|
|
692
|
+
"""
|
|
693
|
+
return "Fundamental group of GL(%s)" % self._n
|
|
694
|
+
|
|
695
|
+
def family(self):
|
|
696
|
+
r"""
|
|
697
|
+
The family associated with the set of special nodes.
|
|
698
|
+
|
|
699
|
+
EXAMPLES::
|
|
700
|
+
|
|
701
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
702
|
+
sage: fam = FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True).family() # indirect doctest
|
|
703
|
+
sage: fam
|
|
704
|
+
Lazy family (<lambda>(i))_{i in Integer Ring}
|
|
705
|
+
sage: fam[-3]
|
|
706
|
+
-3
|
|
707
|
+
"""
|
|
708
|
+
return LazyFamily(ZZ, lambda i: i)
|
|
709
|
+
|
|
710
|
+
def _an_element_(self):
|
|
711
|
+
r"""
|
|
712
|
+
An element of ``self``.
|
|
713
|
+
|
|
714
|
+
EXAMPLES::
|
|
715
|
+
|
|
716
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
717
|
+
sage: FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True).an_element()
|
|
718
|
+
pi[5]
|
|
719
|
+
"""
|
|
720
|
+
return self(ZZ(5))
|
|
721
|
+
|
|
722
|
+
def some_elements(self):
|
|
723
|
+
r"""
|
|
724
|
+
Return some elements of ``self``.
|
|
725
|
+
|
|
726
|
+
EXAMPLES::
|
|
727
|
+
|
|
728
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
729
|
+
sage: FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True).some_elements()
|
|
730
|
+
[pi[-2], pi[2], pi[5]]
|
|
731
|
+
"""
|
|
732
|
+
return [self(ZZ(i)) for i in [-2, 2, 5]]
|
|
733
|
+
|
|
734
|
+
def group_generators(self):
|
|
735
|
+
r"""
|
|
736
|
+
Return group generators for ``self``.
|
|
737
|
+
|
|
738
|
+
EXAMPLES::
|
|
739
|
+
|
|
740
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
741
|
+
sage: FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True).group_generators()
|
|
742
|
+
(pi[1],)
|
|
743
|
+
"""
|
|
744
|
+
return (self(ZZ.one()),)
|
|
745
|
+
|
|
746
|
+
def action(self, i):
|
|
747
|
+
r"""
|
|
748
|
+
The action of the `i`-th automorphism on the affine Dynkin node set.
|
|
749
|
+
|
|
750
|
+
EXAMPLES::
|
|
751
|
+
|
|
752
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
753
|
+
sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True)
|
|
754
|
+
sage: F.action(4)(2)
|
|
755
|
+
0
|
|
756
|
+
sage: F.action(-4)(2)
|
|
757
|
+
1
|
|
758
|
+
"""
|
|
759
|
+
return lambda j: (i + j) % self._n
|
|
760
|
+
|
|
761
|
+
def dual_node(self, i):
|
|
762
|
+
r"""
|
|
763
|
+
The node whose special automorphism is inverse to that of `i`.
|
|
764
|
+
|
|
765
|
+
EXAMPLES::
|
|
766
|
+
|
|
767
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
768
|
+
sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True)
|
|
769
|
+
sage: F.dual_node(2)
|
|
770
|
+
-2
|
|
771
|
+
"""
|
|
772
|
+
return -i
|
|
773
|
+
|
|
774
|
+
@cached_method
|
|
775
|
+
def reduced_word(self, i):
|
|
776
|
+
r"""
|
|
777
|
+
A reduced word for the finite permutation part of the
|
|
778
|
+
special automorphism indexed by `i`.
|
|
779
|
+
|
|
780
|
+
More precisely, return a reduced word for the finite Weyl group element `u`
|
|
781
|
+
where `i`-th automorphism (expressed in the extended affine Weyl group)
|
|
782
|
+
has the form `t u` where `t` is a translation element.
|
|
783
|
+
|
|
784
|
+
EXAMPLES::
|
|
785
|
+
|
|
786
|
+
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
|
|
787
|
+
sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True)
|
|
788
|
+
sage: F.reduced_word(10)
|
|
789
|
+
(1, 2)
|
|
790
|
+
"""
|
|
791
|
+
i = i % self._n
|
|
792
|
+
if i == 0:
|
|
793
|
+
return tuple()
|
|
794
|
+
om = self.cartan_type().classical().root_system().weight_lattice().fundamental_weight(i)
|
|
795
|
+
return tuple((-om).reduced_word())
|