passagemath-modules 10.6.31rc3__cp314-cp314-musllinux_1_2_x86_64.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 +808 -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-0cd532bd.so.1 +0 -0
- passagemath_modules.libs/libgfortran-2c33b284.so.5.0.0 +0 -0
- passagemath_modules.libs/libgmp-0e7fc84e.so.10.5.0 +0 -0
- passagemath_modules.libs/libgsl-42cda06f.so.28.0.0 +0 -0
- passagemath_modules.libs/libmpc-d8ebe4b5.so.3.3.1 +0 -0
- passagemath_modules.libs/libmpfr-aaecbfc0.so.6.2.1 +0 -0
- passagemath_modules.libs/libopenblasp-r0-905cb27d.3.29.so +0 -0
- passagemath_modules.libs/libquadmath-bb76a5fc.so.0.0.0 +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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-linux-musl.so +0 -0
- sage/calculus/integration.pyx +698 -0
- sage/calculus/interpolation.cpython-314-x86_64-linux-musl.so +0 -0
- sage/calculus/interpolation.pxd +13 -0
- sage/calculus/interpolation.pyx +387 -0
- sage/calculus/interpolators.cpython-314-x86_64-linux-musl.so +0 -0
- sage/calculus/interpolators.pyx +326 -0
- sage/calculus/ode.cpython-314-x86_64-linux-musl.so +0 -0
- sage/calculus/ode.pxd +5 -0
- sage/calculus/ode.pyx +610 -0
- sage/calculus/riemann.cpython-314-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-linux-musl.so +0 -0
- sage/libs/mpmath/utils.pxd +4 -0
- sage/libs/mpmath/utils.pyx +319 -0
- sage/matrix/action.cpython-314-x86_64-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-x86_64-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-x86_64-linux-musl.so +0 -0
- sage/matrix/constructor.pyx +750 -0
- sage/matrix/docs.py +430 -0
- sage/matrix/echelon_matrix.cpython-314-x86_64-linux-musl.so +0 -0
- sage/matrix/echelon_matrix.pyx +155 -0
- sage/matrix/matrix.pxd +2 -0
- sage/matrix/matrix0.cpython-314-x86_64-linux-musl.so +0 -0
- sage/matrix/matrix0.pxd +68 -0
- sage/matrix/matrix0.pyx +6324 -0
- sage/matrix/matrix1.cpython-314-x86_64-linux-musl.so +0 -0
- sage/matrix/matrix1.pxd +8 -0
- sage/matrix/matrix1.pyx +2851 -0
- sage/matrix/matrix2.cpython-314-x86_64-linux-musl.so +0 -0
- sage/matrix/matrix2.pxd +25 -0
- sage/matrix/matrix2.pyx +20181 -0
- sage/matrix/matrix_cdv.cpython-314-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-linux-musl.so +0 -0
- sage/matroids/extension.pxd +34 -0
- sage/matroids/extension.pyx +519 -0
- sage/matroids/flats_matroid.cpython-314-x86_64-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-x86_64-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-x86_64-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-x86_64-linux-musl.so +0 -0
- sage/matroids/linear_matroid.pxd +180 -0
- sage/matroids/linear_matroid.pyx +6649 -0
- sage/matroids/matroid.cpython-314-x86_64-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-x86_64-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-x86_64-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-x86_64-linux-musl.so +0 -0
- sage/matroids/union_matroid.pxd +20 -0
- sage/matroids/union_matroid.pyx +331 -0
- sage/matroids/unpickling.cpython-314-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-linux-musl.so +0 -0
- sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
- sage/rings/function_field/khuri_makdisi.cpython-314-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-linux-musl.so +0 -0
- sage/stats/hmm/chmm.pyx +1595 -0
- sage/stats/hmm/distributions.cpython-314-x86_64-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-x86_64-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-x86_64-linux-musl.so +0 -0
- sage/stats/hmm/util.pxd +7 -0
- sage/stats/hmm/util.pyx +165 -0
- sage/stats/intlist.cpython-314-x86_64-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-x86_64-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,617 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
"""
|
|
3
|
+
Base classes for Matrix Groups
|
|
4
|
+
|
|
5
|
+
TESTS:
|
|
6
|
+
|
|
7
|
+
Loading, saving, ... works::
|
|
8
|
+
|
|
9
|
+
sage: # needs sage.libs.gap
|
|
10
|
+
sage: G = GL(2,5); G
|
|
11
|
+
General Linear Group of degree 2 over Finite Field of size 5
|
|
12
|
+
sage: TestSuite(G).run()
|
|
13
|
+
sage: g = G.1; g
|
|
14
|
+
[4 1]
|
|
15
|
+
[4 0]
|
|
16
|
+
sage: TestSuite(g).run()
|
|
17
|
+
|
|
18
|
+
We test that :issue:`9437` is fixed::
|
|
19
|
+
|
|
20
|
+
sage: len(list(SL(2, Zmod(4)))) # needs sage.libs.gap
|
|
21
|
+
48
|
|
22
|
+
|
|
23
|
+
AUTHORS:
|
|
24
|
+
|
|
25
|
+
- William Stein: initial version
|
|
26
|
+
|
|
27
|
+
- David Joyner (2006-03-15): degree, base_ring, _contains_, list,
|
|
28
|
+
random, order methods; examples
|
|
29
|
+
|
|
30
|
+
- William Stein (2006-12): rewrite
|
|
31
|
+
|
|
32
|
+
- David Joyner (2007-12): Added invariant_generators (with Martin
|
|
33
|
+
Albrecht and Simon King)
|
|
34
|
+
|
|
35
|
+
- David Joyner (2008-08): Added module_composition_factors (interface
|
|
36
|
+
to GAP's MeatAxe implementation) and as_permutation_group (returns
|
|
37
|
+
isomorphic PermutationGroup).
|
|
38
|
+
|
|
39
|
+
- Simon King (2010-05): Improve invariant_generators by using GAP
|
|
40
|
+
for the construction of the Reynolds operator in Singular.
|
|
41
|
+
|
|
42
|
+
- Sebastian Oehms (2018-07): Add :meth:`subgroup` and :meth:`ambient` see :issue:`25894`
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
# ****************************************************************************
|
|
46
|
+
# Copyright (C) 2006 David Joyner and William Stein <wstein@gmail.com>
|
|
47
|
+
# 2009 Mike Hansen
|
|
48
|
+
# 2013 Volker Braun <vbraun.name@gmail.com>
|
|
49
|
+
# 2017-2021 Frédéric Chapoton
|
|
50
|
+
# 2018-2019 Sebastian Oehms
|
|
51
|
+
# 2020 Siddharth Singh
|
|
52
|
+
# 2023 Matthias Koeppe
|
|
53
|
+
#
|
|
54
|
+
# This program is free software: you can redistribute it and/or modify
|
|
55
|
+
# it under the terms of the GNU General Public License as published by
|
|
56
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
57
|
+
# (at your option) any later version.
|
|
58
|
+
# https://www.gnu.org/licenses/
|
|
59
|
+
# ****************************************************************************
|
|
60
|
+
|
|
61
|
+
from sage.categories.groups import Groups
|
|
62
|
+
from sage.categories.rings import Rings
|
|
63
|
+
from sage.rings.integer import Integer
|
|
64
|
+
from sage.matrix.matrix_space import MatrixSpace
|
|
65
|
+
from sage.misc.latex import latex
|
|
66
|
+
from sage.structure.richcmp import (richcmp_not_equal, rich_to_bool,
|
|
67
|
+
richcmp_method, richcmp)
|
|
68
|
+
from sage.misc.cachefunc import cached_method
|
|
69
|
+
from sage.groups.group import Group
|
|
70
|
+
|
|
71
|
+
from sage.groups.matrix_gps.group_element import MatrixGroupElement_generic
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def is_MatrixGroup(x):
|
|
75
|
+
"""
|
|
76
|
+
Test whether ``x`` is a matrix group.
|
|
77
|
+
|
|
78
|
+
EXAMPLES::
|
|
79
|
+
|
|
80
|
+
sage: from sage.groups.matrix_gps.matrix_group import is_MatrixGroup
|
|
81
|
+
sage: is_MatrixGroup(MatrixSpace(QQ, 3))
|
|
82
|
+
doctest:warning...
|
|
83
|
+
DeprecationWarning: the function is_MatrixGroup is deprecated;
|
|
84
|
+
use 'isinstance(..., MatrixGroup_base)' instead
|
|
85
|
+
See https://github.com/sagemath/sage/issues/37898 for details.
|
|
86
|
+
False
|
|
87
|
+
sage: is_MatrixGroup(Mat(QQ, 3))
|
|
88
|
+
False
|
|
89
|
+
sage: is_MatrixGroup(GL(2, ZZ))
|
|
90
|
+
True
|
|
91
|
+
sage: is_MatrixGroup(MatrixGroup([matrix(2, [1,1,0,1])]))
|
|
92
|
+
True
|
|
93
|
+
"""
|
|
94
|
+
from sage.misc.superseded import deprecation
|
|
95
|
+
deprecation(37898, "the function is_MatrixGroup is deprecated; use 'isinstance(..., MatrixGroup_base)' instead")
|
|
96
|
+
return isinstance(x, MatrixGroup_base)
|
|
97
|
+
|
|
98
|
+
###################################################################
|
|
99
|
+
#
|
|
100
|
+
# Base class for all matrix groups
|
|
101
|
+
#
|
|
102
|
+
###################################################################
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
class MatrixGroup_base(Group):
|
|
106
|
+
"""
|
|
107
|
+
Base class for all matrix groups.
|
|
108
|
+
|
|
109
|
+
This base class just holds the base ring, but not the degree. So
|
|
110
|
+
it can be a base for affine groups where the natural matrix is
|
|
111
|
+
larger than the degree of the affine group. Makes no assumption
|
|
112
|
+
about the group except that its elements have a ``matrix()``
|
|
113
|
+
method.
|
|
114
|
+
|
|
115
|
+
TESTS::
|
|
116
|
+
|
|
117
|
+
sage: G = SO(3, GF(11)); G
|
|
118
|
+
Special Orthogonal Group of degree 3 over Finite Field of size 11
|
|
119
|
+
sage: G.category()
|
|
120
|
+
Category of finite groups
|
|
121
|
+
"""
|
|
122
|
+
_ambient = None # internal attribute to register the ambient group in case this instance is a subgroup
|
|
123
|
+
|
|
124
|
+
def _check_matrix(self, x, *args):
|
|
125
|
+
"""
|
|
126
|
+
Check whether the matrix ``x`` defines a group element.
|
|
127
|
+
|
|
128
|
+
This is used by the element constructor (if you pass
|
|
129
|
+
``check=True``, the default) that the defining matrix is valid
|
|
130
|
+
for this parent. Derived classes must override this to verify
|
|
131
|
+
that the matrix is, for example, orthogonal or symplectic.
|
|
132
|
+
|
|
133
|
+
INPUT:
|
|
134
|
+
|
|
135
|
+
- ``x`` -- a Sage matrix in the correct matrix space (degree
|
|
136
|
+
and base ring)
|
|
137
|
+
|
|
138
|
+
- ``*args`` -- (optional) other representations of ``x``,
|
|
139
|
+
depending on the group implementation. Ignored by default
|
|
140
|
+
|
|
141
|
+
OUTPUT: a :exc:`TypeError` must be raised if ``x`` is invalid
|
|
142
|
+
|
|
143
|
+
EXAMPLES::
|
|
144
|
+
|
|
145
|
+
sage: G = SU(2, GF(5)); F = G.base_ring() # this is GF(5^2,'a') # needs sage.rings.finite_rings
|
|
146
|
+
sage: G._check_matrix(identity_matrix(F, 2)) # needs sage.rings.finite_rings
|
|
147
|
+
sage: G._check_matrix(matrix(F, [[1,1], [0,1]])) # needs sage.rings.finite_rings
|
|
148
|
+
Traceback (most recent call last):
|
|
149
|
+
...
|
|
150
|
+
TypeError: matrix must be unitary with respect to the hermitian form
|
|
151
|
+
[0 1]
|
|
152
|
+
[1 0]
|
|
153
|
+
"""
|
|
154
|
+
if not x.is_invertible():
|
|
155
|
+
raise TypeError('matrix is not invertible')
|
|
156
|
+
|
|
157
|
+
def as_matrix_group(self):
|
|
158
|
+
"""
|
|
159
|
+
Return a new matrix group from the generators.
|
|
160
|
+
|
|
161
|
+
This will throw away any extra structure (encoded in a derived
|
|
162
|
+
class) that a group of special matrices has.
|
|
163
|
+
|
|
164
|
+
EXAMPLES::
|
|
165
|
+
|
|
166
|
+
sage: G = SU(4, GF(5)) # needs sage.rings.finite_rings
|
|
167
|
+
sage: G.as_matrix_group() # needs sage.libs.gap sage.rings.finite_rings
|
|
168
|
+
Matrix group over Finite Field in a of size 5^2 with 2 generators (
|
|
169
|
+
[ a 0 0 0] [ 1 0 4*a + 3 0]
|
|
170
|
+
[ 0 2*a + 3 0 0] [ 1 0 0 0]
|
|
171
|
+
[ 0 0 4*a + 1 0] [ 0 2*a + 4 0 1]
|
|
172
|
+
[ 0 0 0 3*a], [ 0 3*a + 1 0 0]
|
|
173
|
+
)
|
|
174
|
+
|
|
175
|
+
sage: # needs sage.libs.gap
|
|
176
|
+
sage: G = GO(3, GF(5))
|
|
177
|
+
sage: G.as_matrix_group()
|
|
178
|
+
Matrix group over Finite Field of size 5 with 2 generators (
|
|
179
|
+
[2 0 0] [0 1 0]
|
|
180
|
+
[0 3 0] [1 4 4]
|
|
181
|
+
[0 0 1], [0 2 1]
|
|
182
|
+
)
|
|
183
|
+
"""
|
|
184
|
+
from sage.groups.matrix_gps.finitely_generated import MatrixGroup
|
|
185
|
+
return MatrixGroup(self.gens())
|
|
186
|
+
|
|
187
|
+
def subgroup(self, generators, check=True):
|
|
188
|
+
"""
|
|
189
|
+
Return the subgroup generated by the given generators.
|
|
190
|
+
|
|
191
|
+
INPUT:
|
|
192
|
+
|
|
193
|
+
- ``generators`` -- list/tuple/iterable of group elements of ``self``
|
|
194
|
+
- ``check`` -- boolean (default: ``True``); whether to check that each
|
|
195
|
+
matrix is invertible
|
|
196
|
+
|
|
197
|
+
OUTPUT: the subgroup generated by ``generators`` as an instance of
|
|
198
|
+
:class:`FinitelyGeneratedMatrixGroup_gap`
|
|
199
|
+
|
|
200
|
+
EXAMPLES::
|
|
201
|
+
|
|
202
|
+
sage: # needs sage.libs.gap sage.rings.number_field
|
|
203
|
+
sage: UCF = UniversalCyclotomicField()
|
|
204
|
+
sage: G = GL(3, UCF)
|
|
205
|
+
sage: e3 = UCF.gen(3); e5 = UCF.gen(5)
|
|
206
|
+
sage: m = matrix(UCF, 3,3, [[e3, 1, 0], [0, e5, 7],[4, 3, 2]])
|
|
207
|
+
sage: S = G.subgroup([m]); S
|
|
208
|
+
Subgroup with 1 generators (
|
|
209
|
+
[E(3) 1 0]
|
|
210
|
+
[ 0 E(5) 7]
|
|
211
|
+
[ 4 3 2]
|
|
212
|
+
) of General Linear Group of degree 3 over Universal Cyclotomic Field
|
|
213
|
+
|
|
214
|
+
sage: # needs sage.rings.number_field
|
|
215
|
+
sage: CF3 = CyclotomicField(3)
|
|
216
|
+
sage: G = GL(3, CF3)
|
|
217
|
+
sage: e3 = CF3.gen()
|
|
218
|
+
sage: m = matrix(CF3, 3,3, [[e3, 1, 0], [0, ~e3, 7],[4, 3, 2]])
|
|
219
|
+
sage: S = G.subgroup([m]); S
|
|
220
|
+
Subgroup with 1 generators (
|
|
221
|
+
[ zeta3 1 0]
|
|
222
|
+
[ 0 -zeta3 - 1 7]
|
|
223
|
+
[ 4 3 2]
|
|
224
|
+
) of General Linear Group of degree 3 over Cyclotomic Field of order 3 and degree 2
|
|
225
|
+
|
|
226
|
+
TESTS::
|
|
227
|
+
|
|
228
|
+
sage: TestSuite(G).run() # needs sage.rings.number_field
|
|
229
|
+
sage: TestSuite(S).run() # needs sage.rings.number_field
|
|
230
|
+
"""
|
|
231
|
+
try:
|
|
232
|
+
test = self.is_finite()
|
|
233
|
+
except NotImplementedError:
|
|
234
|
+
test = self in Groups().Finite()
|
|
235
|
+
cat = Groups().Finite() if test else Groups()
|
|
236
|
+
|
|
237
|
+
for g in generators:
|
|
238
|
+
if g not in self:
|
|
239
|
+
raise ValueError("generator %s is not in the group" % (g))
|
|
240
|
+
|
|
241
|
+
from sage.groups.matrix_gps.finitely_generated import MatrixGroup
|
|
242
|
+
subgroup = MatrixGroup(generators, check=check, category=cat)
|
|
243
|
+
subgroup._ambient = self
|
|
244
|
+
return subgroup
|
|
245
|
+
|
|
246
|
+
def ambient(self):
|
|
247
|
+
"""
|
|
248
|
+
Return the ambient group of a subgroup.
|
|
249
|
+
|
|
250
|
+
OUTPUT:
|
|
251
|
+
|
|
252
|
+
A group containing ``self``. If ``self`` has not been defined
|
|
253
|
+
as a subgroup, we just return ``self``.
|
|
254
|
+
|
|
255
|
+
EXAMPLES::
|
|
256
|
+
|
|
257
|
+
sage: G = GL(2, QQ)
|
|
258
|
+
sage: m = matrix(QQ, 2, 2, [[3, 0], [~5,1]])
|
|
259
|
+
sage: S = G.subgroup([m])
|
|
260
|
+
sage: S.ambient() is G
|
|
261
|
+
True
|
|
262
|
+
"""
|
|
263
|
+
if self._ambient is None:
|
|
264
|
+
return self
|
|
265
|
+
else:
|
|
266
|
+
return self._ambient
|
|
267
|
+
|
|
268
|
+
def _repr_(self):
|
|
269
|
+
"""
|
|
270
|
+
Return a string representation.
|
|
271
|
+
|
|
272
|
+
EXAMPLES::
|
|
273
|
+
|
|
274
|
+
sage: F = GF(5); MS = MatrixSpace(F, 2, 2)
|
|
275
|
+
sage: gens = [MS([[1,2], [-1,1]]), MS([[1,1], [0,1]])]
|
|
276
|
+
sage: G = MatrixGroup(gens)
|
|
277
|
+
sage: G
|
|
278
|
+
Matrix group over Finite Field of size 5 with 2 generators (
|
|
279
|
+
[1 2] [1 1]
|
|
280
|
+
[4 1], [0 1]
|
|
281
|
+
)
|
|
282
|
+
|
|
283
|
+
case of being a subgroup::
|
|
284
|
+
|
|
285
|
+
sage: # needs sage.rings.number_field
|
|
286
|
+
sage: CF3 = CyclotomicField(3)
|
|
287
|
+
sage: G = GL(2, CF3)
|
|
288
|
+
sage: e3 = CF3.gen()
|
|
289
|
+
sage: m = matrix(CF3, 2, 2, [[e3, 1], [0, ~e3]])
|
|
290
|
+
sage: S = G.subgroup([m]); S
|
|
291
|
+
Subgroup with 1 generators (
|
|
292
|
+
[ zeta3 1]
|
|
293
|
+
[ 0 -zeta3 - 1]
|
|
294
|
+
) of General Linear Group of degree 2 over Cyclotomic Field of order 3 and degree 2
|
|
295
|
+
"""
|
|
296
|
+
ambient_group = self._ambient
|
|
297
|
+
|
|
298
|
+
if ambient_group is None:
|
|
299
|
+
if self.ngens() > 5:
|
|
300
|
+
return 'Matrix group over {0} with {1} generators'.format(
|
|
301
|
+
self.base_ring(), self.ngens())
|
|
302
|
+
else:
|
|
303
|
+
from sage.repl.display.util import format_list
|
|
304
|
+
return 'Matrix group over {0} with {1} generators {2}'.format(
|
|
305
|
+
self.base_ring(), self.ngens(), format_list(self.gens()))
|
|
306
|
+
else:
|
|
307
|
+
if self.ngens() > 5:
|
|
308
|
+
return 'Subgroup with {0} generators of {1}'.format(
|
|
309
|
+
self.ngens(), ambient_group)
|
|
310
|
+
else:
|
|
311
|
+
from sage.repl.display.util import format_list
|
|
312
|
+
return 'Subgroup with {0} generators {1} of {2}'.format(
|
|
313
|
+
self.ngens(), format_list(self.gens()), ambient_group)
|
|
314
|
+
|
|
315
|
+
def _repr_option(self, key):
|
|
316
|
+
"""
|
|
317
|
+
Metadata about the :meth:`_repr_` output.
|
|
318
|
+
|
|
319
|
+
See :meth:`sage.structure.parent._repr_option` for details.
|
|
320
|
+
|
|
321
|
+
EXAMPLES::
|
|
322
|
+
|
|
323
|
+
sage: SO3 = groups.matrix.SO(3, QQ)
|
|
324
|
+
sage: SO3._repr_option('element_ascii_art')
|
|
325
|
+
True
|
|
326
|
+
"""
|
|
327
|
+
if key == 'element_ascii_art':
|
|
328
|
+
return True
|
|
329
|
+
return super()._repr_option(key)
|
|
330
|
+
|
|
331
|
+
def _latex_(self):
|
|
332
|
+
r"""
|
|
333
|
+
EXAMPLES::
|
|
334
|
+
|
|
335
|
+
sage: MS = MatrixSpace(GF(5), 2, 2)
|
|
336
|
+
sage: G = MatrixGroup(MS([[1,2], [-1,1]]), MS([[1,1], [0,1]]))
|
|
337
|
+
sage: latex(G)
|
|
338
|
+
\left\langle \left(\begin{array}{rr}
|
|
339
|
+
1 & 2 \\
|
|
340
|
+
4 & 1
|
|
341
|
+
\end{array}\right), \left(\begin{array}{rr}
|
|
342
|
+
1 & 1 \\
|
|
343
|
+
0 & 1
|
|
344
|
+
\end{array}\right) \right\rangle
|
|
345
|
+
"""
|
|
346
|
+
gens = ', '.join(latex(x) for x in self.gens())
|
|
347
|
+
return '\\left\\langle %s \\right\\rangle' % gens
|
|
348
|
+
|
|
349
|
+
def sign_representation(self, base_ring=None):
|
|
350
|
+
r"""
|
|
351
|
+
Return the sign representation of ``self`` over ``base_ring``.
|
|
352
|
+
|
|
353
|
+
INPUT:
|
|
354
|
+
|
|
355
|
+
- ``base_ring`` -- (optional) the base ring; the default is the base
|
|
356
|
+
ring of ``self``
|
|
357
|
+
|
|
358
|
+
EXAMPLES::
|
|
359
|
+
|
|
360
|
+
sage: G = GL(2, QQ)
|
|
361
|
+
sage: V = G.sign_representation()
|
|
362
|
+
sage: e = G.an_element()
|
|
363
|
+
sage: e
|
|
364
|
+
[1 0]
|
|
365
|
+
[0 1]
|
|
366
|
+
sage: m2 = V.an_element()
|
|
367
|
+
sage: m2
|
|
368
|
+
2*B['v']
|
|
369
|
+
sage: m2*e
|
|
370
|
+
2*B['v']
|
|
371
|
+
sage: m2*e*e
|
|
372
|
+
2*B['v']
|
|
373
|
+
|
|
374
|
+
sage: # needs sage.graphs sage.groups
|
|
375
|
+
sage: W = WeylGroup(["A", 1, 1])
|
|
376
|
+
sage: W.sign_representation()
|
|
377
|
+
Sign representation of
|
|
378
|
+
Weyl Group of type ['A', 1, 1] (as a matrix group acting on the root space)
|
|
379
|
+
over Rational Field
|
|
380
|
+
|
|
381
|
+
sage: G = GL(4, 2)
|
|
382
|
+
sage: G.sign_representation() == G.trivial_representation()
|
|
383
|
+
True
|
|
384
|
+
"""
|
|
385
|
+
if base_ring is None:
|
|
386
|
+
base_ring = self.base_ring()
|
|
387
|
+
if base_ring.characteristic() == 2: # characteristic 2
|
|
388
|
+
return self.trivial_representation()
|
|
389
|
+
from sage.modules.with_basis.representation import SignRepresentationMatrixGroup
|
|
390
|
+
return SignRepresentationMatrixGroup(self, base_ring)
|
|
391
|
+
|
|
392
|
+
def natural_representation(self, base_ring=None):
|
|
393
|
+
r"""
|
|
394
|
+
Return the natural representation of ``self`` over ``base_ring``.
|
|
395
|
+
|
|
396
|
+
INPUT:
|
|
397
|
+
|
|
398
|
+
- ``base_ring`` -- (optional) the base ring; the default is the base
|
|
399
|
+
ring of ``self``
|
|
400
|
+
|
|
401
|
+
EXAMPLES::
|
|
402
|
+
|
|
403
|
+
sage: G = groups.matrix.SL(6, 3)
|
|
404
|
+
sage: V = G.natural_representation()
|
|
405
|
+
sage: V
|
|
406
|
+
Natural representation of Special Linear Group of degree 6
|
|
407
|
+
over Finite Field of size 3
|
|
408
|
+
sage: e = prod(G.gens()); e # needs sage.libs.gap
|
|
409
|
+
[2 0 0 0 0 1]
|
|
410
|
+
[2 0 0 0 0 0]
|
|
411
|
+
[0 2 0 0 0 0]
|
|
412
|
+
[0 0 2 0 0 0]
|
|
413
|
+
[0 0 0 2 0 0]
|
|
414
|
+
[0 0 0 0 2 0]
|
|
415
|
+
sage: v = V.an_element()
|
|
416
|
+
sage: v
|
|
417
|
+
2*e[0] + 2*e[1]
|
|
418
|
+
sage: e * v # needs sage.libs.gap
|
|
419
|
+
e[0] + e[1] + e[2]
|
|
420
|
+
"""
|
|
421
|
+
from sage.modules.with_basis.representation import NaturalMatrixRepresentation
|
|
422
|
+
return NaturalMatrixRepresentation(self, base_ring)
|
|
423
|
+
|
|
424
|
+
|
|
425
|
+
###################################################################
|
|
426
|
+
#
|
|
427
|
+
# Matrix group over a generic ring
|
|
428
|
+
#
|
|
429
|
+
###################################################################
|
|
430
|
+
|
|
431
|
+
|
|
432
|
+
@richcmp_method
|
|
433
|
+
class MatrixGroup_generic(MatrixGroup_base):
|
|
434
|
+
|
|
435
|
+
Element = MatrixGroupElement_generic
|
|
436
|
+
|
|
437
|
+
def __init__(self, degree, base_ring, category=None):
|
|
438
|
+
"""
|
|
439
|
+
Base class for matrix groups over generic base rings.
|
|
440
|
+
|
|
441
|
+
You should not use this class directly. Instead, use one of
|
|
442
|
+
the more specialized derived classes.
|
|
443
|
+
|
|
444
|
+
INPUT:
|
|
445
|
+
|
|
446
|
+
- ``degree`` -- integer; the degree (matrix size) of the
|
|
447
|
+
matrix group
|
|
448
|
+
|
|
449
|
+
- ``base_ring`` -- ring; the base ring of the matrices
|
|
450
|
+
|
|
451
|
+
TESTS::
|
|
452
|
+
|
|
453
|
+
sage: G = GL(2, QQ)
|
|
454
|
+
sage: from sage.groups.matrix_gps.matrix_group import MatrixGroup_generic
|
|
455
|
+
sage: isinstance(G, MatrixGroup_generic)
|
|
456
|
+
True
|
|
457
|
+
"""
|
|
458
|
+
assert base_ring in Rings
|
|
459
|
+
assert isinstance(degree, Integer)
|
|
460
|
+
|
|
461
|
+
self._deg = degree
|
|
462
|
+
if self._deg <= 0:
|
|
463
|
+
raise ValueError('the degree must be at least 1')
|
|
464
|
+
|
|
465
|
+
cat = Groups() if category is None else category
|
|
466
|
+
if base_ring in Rings().Finite():
|
|
467
|
+
cat = cat.Finite()
|
|
468
|
+
super().__init__(base=base_ring, category=cat)
|
|
469
|
+
|
|
470
|
+
def degree(self):
|
|
471
|
+
"""
|
|
472
|
+
Return the degree of this matrix group.
|
|
473
|
+
|
|
474
|
+
OUTPUT: integer; the size (number of rows equals number of columns)
|
|
475
|
+
of the matrices
|
|
476
|
+
|
|
477
|
+
EXAMPLES::
|
|
478
|
+
|
|
479
|
+
sage: SU(5,5).degree() # needs sage.rings.finite_rings
|
|
480
|
+
5
|
|
481
|
+
"""
|
|
482
|
+
return self._deg
|
|
483
|
+
|
|
484
|
+
@cached_method
|
|
485
|
+
def matrix_space(self):
|
|
486
|
+
"""
|
|
487
|
+
Return the matrix space corresponding to this matrix group.
|
|
488
|
+
|
|
489
|
+
This is a matrix space over the field of definition of this matrix
|
|
490
|
+
group.
|
|
491
|
+
|
|
492
|
+
EXAMPLES::
|
|
493
|
+
|
|
494
|
+
sage: F = GF(5); MS = MatrixSpace(F, 2, 2)
|
|
495
|
+
sage: G = MatrixGroup([MS(1), MS([1,2,3,4])])
|
|
496
|
+
sage: G.matrix_space()
|
|
497
|
+
Full MatrixSpace of 2 by 2 dense matrices over Finite Field of size 5
|
|
498
|
+
sage: G.matrix_space() is MS
|
|
499
|
+
True
|
|
500
|
+
"""
|
|
501
|
+
return MatrixSpace(self.base_ring(), self.degree())
|
|
502
|
+
|
|
503
|
+
def __richcmp__(self, other, op):
|
|
504
|
+
"""
|
|
505
|
+
Implement rich comparison.
|
|
506
|
+
|
|
507
|
+
We treat two matrix groups as equal if their generators are
|
|
508
|
+
the same in the same order. Infinitely-generated groups are
|
|
509
|
+
compared by identity.
|
|
510
|
+
|
|
511
|
+
INPUT:
|
|
512
|
+
|
|
513
|
+
- ``other`` -- anything
|
|
514
|
+
|
|
515
|
+
- ``op`` -- comparison operator
|
|
516
|
+
|
|
517
|
+
OUTPUT: boolean
|
|
518
|
+
|
|
519
|
+
EXAMPLES::
|
|
520
|
+
|
|
521
|
+
sage: # needs sage.libs.gap
|
|
522
|
+
sage: G = GL(2,3)
|
|
523
|
+
sage: H = MatrixGroup(G.gens())
|
|
524
|
+
sage: H == G
|
|
525
|
+
True
|
|
526
|
+
sage: G == H
|
|
527
|
+
True
|
|
528
|
+
|
|
529
|
+
sage: # needs sage.libs.gap
|
|
530
|
+
sage: MS = MatrixSpace(QQ, 2, 2)
|
|
531
|
+
sage: G = MatrixGroup([MS(1), MS([1,2,3,4])])
|
|
532
|
+
sage: G == G
|
|
533
|
+
True
|
|
534
|
+
sage: G == MatrixGroup(G.gens())
|
|
535
|
+
True
|
|
536
|
+
|
|
537
|
+
TESTS::
|
|
538
|
+
|
|
539
|
+
sage: # needs sage.groups sage.rings.finite_rings
|
|
540
|
+
sage: G = groups.matrix.GL(4,2)
|
|
541
|
+
sage: H = MatrixGroup(G.gens())
|
|
542
|
+
sage: G == H
|
|
543
|
+
True
|
|
544
|
+
sage: G != H
|
|
545
|
+
False
|
|
546
|
+
"""
|
|
547
|
+
if not isinstance(other, MatrixGroup_base):
|
|
548
|
+
return NotImplemented
|
|
549
|
+
|
|
550
|
+
if self is other:
|
|
551
|
+
return rich_to_bool(op, 0)
|
|
552
|
+
|
|
553
|
+
lx = self.matrix_space()
|
|
554
|
+
rx = other.matrix_space()
|
|
555
|
+
if lx != rx:
|
|
556
|
+
return richcmp_not_equal(lx, rx, op)
|
|
557
|
+
|
|
558
|
+
# compare number of generators
|
|
559
|
+
try:
|
|
560
|
+
n_self = self.ngens()
|
|
561
|
+
n_other = other.ngens()
|
|
562
|
+
except (AttributeError, NotImplementedError):
|
|
563
|
+
return richcmp(id(self), id(other), op)
|
|
564
|
+
|
|
565
|
+
if n_self != n_other:
|
|
566
|
+
return richcmp_not_equal(self, other, op)
|
|
567
|
+
|
|
568
|
+
from sage.structure.element import InfinityElement as Infinity
|
|
569
|
+
if isinstance(n_self, Infinity) or isinstance(n_other, Infinity):
|
|
570
|
+
return richcmp(id(self), id(other), op)
|
|
571
|
+
|
|
572
|
+
# compact generator matrices
|
|
573
|
+
try:
|
|
574
|
+
self_gens = self.gens()
|
|
575
|
+
other_gens = other.gens()
|
|
576
|
+
except (AttributeError, NotImplementedError):
|
|
577
|
+
return richcmp(id(self), id(other), op)
|
|
578
|
+
|
|
579
|
+
assert n_self == n_other
|
|
580
|
+
for g, h in zip(self_gens, other_gens):
|
|
581
|
+
lx = g.matrix()
|
|
582
|
+
rx = h.matrix()
|
|
583
|
+
if lx != rx:
|
|
584
|
+
return richcmp_not_equal(lx, rx, op)
|
|
585
|
+
return rich_to_bool(op, 0)
|
|
586
|
+
|
|
587
|
+
def is_trivial(self):
|
|
588
|
+
r"""
|
|
589
|
+
Return ``True`` if this group is the trivial group.
|
|
590
|
+
|
|
591
|
+
A group is trivial, if it consists only of the identity
|
|
592
|
+
element, that is, if all its generators are the identity.
|
|
593
|
+
|
|
594
|
+
EXAMPLES::
|
|
595
|
+
|
|
596
|
+
sage: # needs sage.libs.gap
|
|
597
|
+
sage: MatrixGroup([identity_matrix(3)]).is_trivial()
|
|
598
|
+
True
|
|
599
|
+
sage: SL(2, ZZ).is_trivial()
|
|
600
|
+
False
|
|
601
|
+
sage: CoxeterGroup(['B',3], implementation='matrix').is_trivial()
|
|
602
|
+
False
|
|
603
|
+
|
|
604
|
+
TESTS::
|
|
605
|
+
|
|
606
|
+
sage: # needs sage.libs.gap
|
|
607
|
+
sage: CoxeterGroup(['A',0], implementation='matrix').is_trivial()
|
|
608
|
+
True
|
|
609
|
+
sage: MatrixGroup([matrix(SR, [[1,x], [0,1]])]).is_trivial() # needs sage.symbolic
|
|
610
|
+
False
|
|
611
|
+
sage: G = MatrixGroup([identity_matrix(3), identity_matrix(3)])
|
|
612
|
+
sage: G.ngens()
|
|
613
|
+
2
|
|
614
|
+
sage: G.is_trivial()
|
|
615
|
+
True
|
|
616
|
+
"""
|
|
617
|
+
return all(g.is_one() for g in self.gens())
|