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,251 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
"""
|
|
3
|
+
Symplectic Linear Groups
|
|
4
|
+
|
|
5
|
+
EXAMPLES::
|
|
6
|
+
|
|
7
|
+
sage: G = Sp(4, GF(7)); G
|
|
8
|
+
Symplectic Group of degree 4 over Finite Field of size 7
|
|
9
|
+
|
|
10
|
+
sage: # needs sage.libs.gap
|
|
11
|
+
sage: g = prod(G.gens()); g
|
|
12
|
+
[3 0 3 0]
|
|
13
|
+
[1 0 0 0]
|
|
14
|
+
[0 1 0 1]
|
|
15
|
+
[0 2 0 0]
|
|
16
|
+
sage: m = g.matrix()
|
|
17
|
+
sage: m * G.invariant_form() * m.transpose() == G.invariant_form()
|
|
18
|
+
True
|
|
19
|
+
sage: G.order()
|
|
20
|
+
276595200
|
|
21
|
+
|
|
22
|
+
AUTHORS:
|
|
23
|
+
|
|
24
|
+
- David Joyner (2006-03): initial version, modified from
|
|
25
|
+
special_linear (by W. Stein)
|
|
26
|
+
|
|
27
|
+
- Volker Braun (2013-1) port to new Parent, libGAP, extreme refactoring.
|
|
28
|
+
|
|
29
|
+
- Sebastian Oehms (2018-8) add option for user defined invariant bilinear
|
|
30
|
+
form and bug-fix in
|
|
31
|
+
:meth:`~sage.groups.matrix_gps.symplectic.SymplecticMatrixGroup_generic.invariant_form`
|
|
32
|
+
(see :issue:`26028`)
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
# ****************************************************************************
|
|
36
|
+
# Copyright (C) 2006 David Joyner and William Stein
|
|
37
|
+
# 2013 Volker Braun <vbraun.name@gmail.com>
|
|
38
|
+
# 2018 Sebastian Oehms
|
|
39
|
+
# 2018 Travis Scrimshaw
|
|
40
|
+
#
|
|
41
|
+
# This program is free software: you can redistribute it and/or modify
|
|
42
|
+
# it under the terms of the GNU General Public License as published by
|
|
43
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
44
|
+
# (at your option) any later version.
|
|
45
|
+
# https://www.gnu.org/licenses/
|
|
46
|
+
# ****************************************************************************
|
|
47
|
+
|
|
48
|
+
from sage.misc.latex import latex
|
|
49
|
+
from sage.misc.cachefunc import cached_method
|
|
50
|
+
from sage.rings.finite_rings.finite_field_base import FiniteField
|
|
51
|
+
from sage.groups.matrix_gps.named_group import (
|
|
52
|
+
normalize_args_vectorspace, normalize_args_invariant_form,
|
|
53
|
+
NamedMatrixGroup_generic)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
###############################################################################
|
|
57
|
+
# Symplectic Group
|
|
58
|
+
###############################################################################
|
|
59
|
+
|
|
60
|
+
def Sp(n, R, var='a', invariant_form=None):
|
|
61
|
+
r"""
|
|
62
|
+
Return the symplectic group.
|
|
63
|
+
|
|
64
|
+
The special linear group `GL( d, R )` consists of all `d \times d`
|
|
65
|
+
matrices that are invertible over the ring `R` with determinant one.
|
|
66
|
+
|
|
67
|
+
.. NOTE::
|
|
68
|
+
|
|
69
|
+
This group is also available via ``groups.matrix.Sp()``.
|
|
70
|
+
|
|
71
|
+
INPUT:
|
|
72
|
+
|
|
73
|
+
- ``n`` -- positive integer
|
|
74
|
+
|
|
75
|
+
- ``R`` -- ring or an integer; if an integer is specified, the
|
|
76
|
+
corresponding finite field is used
|
|
77
|
+
|
|
78
|
+
- ``var`` -- (default: ``'a'``) variable used to
|
|
79
|
+
represent generator of the finite field, if needed
|
|
80
|
+
|
|
81
|
+
- ``invariant_form`` -- (optional) instances being accepted by
|
|
82
|
+
the matrix-constructor which define a `n \times n` square matrix
|
|
83
|
+
over ``R`` describing the alternating form to be kept invariant
|
|
84
|
+
by the symplectic group
|
|
85
|
+
|
|
86
|
+
EXAMPLES::
|
|
87
|
+
|
|
88
|
+
sage: Sp(4, 5)
|
|
89
|
+
Symplectic Group of degree 4 over Finite Field of size 5
|
|
90
|
+
|
|
91
|
+
sage: Sp(4, IntegerModRing(15))
|
|
92
|
+
Symplectic Group of degree 4 over Ring of integers modulo 15
|
|
93
|
+
|
|
94
|
+
sage: Sp(3, GF(7))
|
|
95
|
+
Traceback (most recent call last):
|
|
96
|
+
...
|
|
97
|
+
ValueError: the degree must be even
|
|
98
|
+
|
|
99
|
+
Using the ``invariant_form`` option::
|
|
100
|
+
|
|
101
|
+
sage: m = matrix(QQ, 4,4, [[0, 0, 1, 0], [0, 0, 0, 2], [-1, 0, 0, 0], [0, -2, 0, 0]])
|
|
102
|
+
sage: Sp4m = Sp(4, QQ, invariant_form=m)
|
|
103
|
+
sage: Sp4 = Sp(4, QQ)
|
|
104
|
+
sage: Sp4 == Sp4m
|
|
105
|
+
False
|
|
106
|
+
sage: Sp4.invariant_form()
|
|
107
|
+
[ 0 0 0 1]
|
|
108
|
+
[ 0 0 1 0]
|
|
109
|
+
[ 0 -1 0 0]
|
|
110
|
+
[-1 0 0 0]
|
|
111
|
+
sage: Sp4m.invariant_form()
|
|
112
|
+
[ 0 0 1 0]
|
|
113
|
+
[ 0 0 0 2]
|
|
114
|
+
[-1 0 0 0]
|
|
115
|
+
[ 0 -2 0 0]
|
|
116
|
+
sage: pm = Permutation([2,1,4,3]).to_matrix()
|
|
117
|
+
sage: g = Sp4(pm); g in Sp4; g
|
|
118
|
+
True
|
|
119
|
+
[0 1 0 0]
|
|
120
|
+
[1 0 0 0]
|
|
121
|
+
[0 0 0 1]
|
|
122
|
+
[0 0 1 0]
|
|
123
|
+
sage: Sp4m(pm)
|
|
124
|
+
Traceback (most recent call last):
|
|
125
|
+
...
|
|
126
|
+
TypeError: matrix must be symplectic with respect to the alternating form
|
|
127
|
+
[ 0 0 1 0]
|
|
128
|
+
[ 0 0 0 2]
|
|
129
|
+
[-1 0 0 0]
|
|
130
|
+
[ 0 -2 0 0]
|
|
131
|
+
|
|
132
|
+
sage: Sp(4,3, invariant_form=[[0,0,0,1],[0,0,1,0],[0,2,0,0], [2,0,0,0]])
|
|
133
|
+
Traceback (most recent call last):
|
|
134
|
+
...
|
|
135
|
+
NotImplementedError: invariant_form for finite groups is fixed by GAP
|
|
136
|
+
|
|
137
|
+
TESTS::
|
|
138
|
+
|
|
139
|
+
sage: TestSuite(Sp4).run()
|
|
140
|
+
sage: TestSuite(Sp4m).run()
|
|
141
|
+
sage: groups.matrix.Sp(2, 3) # needs sage.modules sage.rings.finite_rings
|
|
142
|
+
Symplectic Group of degree 2 over Finite Field of size 3
|
|
143
|
+
|
|
144
|
+
sage: # needs sage.libs.gap
|
|
145
|
+
sage: G = Sp(4,5)
|
|
146
|
+
sage: TestSuite(G).run()
|
|
147
|
+
"""
|
|
148
|
+
degree, ring = normalize_args_vectorspace(n, R, var=var)
|
|
149
|
+
if degree % 2:
|
|
150
|
+
raise ValueError('the degree must be even')
|
|
151
|
+
|
|
152
|
+
if invariant_form is not None:
|
|
153
|
+
if isinstance(ring, FiniteField):
|
|
154
|
+
raise NotImplementedError("invariant_form for finite groups is fixed by GAP")
|
|
155
|
+
|
|
156
|
+
invariant_form = normalize_args_invariant_form(ring, degree, invariant_form)
|
|
157
|
+
if not invariant_form.is_alternating():
|
|
158
|
+
raise ValueError("invariant_form must be alternating")
|
|
159
|
+
|
|
160
|
+
name = 'Symplectic Group of degree {0} over {1} with respect to alternating bilinear form\n{2}'.format(
|
|
161
|
+
degree, ring, invariant_form)
|
|
162
|
+
ltx = r'\text{{Sp}}_{{{0}}}({1})\text{{ with respect to alternating bilinear form}}{2}'.format(
|
|
163
|
+
degree, latex(ring), latex(invariant_form))
|
|
164
|
+
else:
|
|
165
|
+
name = 'Symplectic Group of degree {0} over {1}'.format(degree, ring)
|
|
166
|
+
ltx = r'\text{{Sp}}_{{{0}}}({1})'.format(degree, latex(ring))
|
|
167
|
+
|
|
168
|
+
try:
|
|
169
|
+
from .symplectic_gap import SymplecticMatrixGroup_gap
|
|
170
|
+
except ImportError:
|
|
171
|
+
pass
|
|
172
|
+
else:
|
|
173
|
+
try:
|
|
174
|
+
cmd = 'Sp({0}, {1})'.format(degree, ring._gap_init_())
|
|
175
|
+
return SymplecticMatrixGroup_gap(degree, ring, True, name, ltx, cmd)
|
|
176
|
+
except ValueError:
|
|
177
|
+
pass
|
|
178
|
+
|
|
179
|
+
return SymplecticMatrixGroup_generic(degree, ring, True, name, ltx, invariant_form=invariant_form)
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
class SymplecticMatrixGroup_generic(NamedMatrixGroup_generic):
|
|
183
|
+
r"""
|
|
184
|
+
Symplectic Group over arbitrary rings.
|
|
185
|
+
|
|
186
|
+
EXAMPLES::
|
|
187
|
+
|
|
188
|
+
sage: Sp43 = Sp(4,3); Sp43
|
|
189
|
+
Symplectic Group of degree 4 over Finite Field of size 3
|
|
190
|
+
sage: latex(Sp43)
|
|
191
|
+
\text{Sp}_{4}(\Bold{F}_{3})
|
|
192
|
+
|
|
193
|
+
sage: Sp4m = Sp(4, QQ, invariant_form=(0, 0, 1, 0, 0, 0, 0, 2,
|
|
194
|
+
....: -1, 0, 0, 0, 0, -2, 0, 0)); Sp4m
|
|
195
|
+
Symplectic Group of degree 4 over Rational Field
|
|
196
|
+
with respect to alternating bilinear form
|
|
197
|
+
[ 0 0 1 0]
|
|
198
|
+
[ 0 0 0 2]
|
|
199
|
+
[-1 0 0 0]
|
|
200
|
+
[ 0 -2 0 0]
|
|
201
|
+
sage: latex(Sp4m)
|
|
202
|
+
\text{Sp}_{4}(\Bold{Q})\text{ with respect to alternating bilinear form}\left(\begin{array}{rrrr}
|
|
203
|
+
0 & 0 & 1 & 0 \\
|
|
204
|
+
0 & 0 & 0 & 2 \\
|
|
205
|
+
-1 & 0 & 0 & 0 \\
|
|
206
|
+
0 & -2 & 0 & 0
|
|
207
|
+
\end{array}\right)
|
|
208
|
+
"""
|
|
209
|
+
|
|
210
|
+
@cached_method
|
|
211
|
+
def invariant_form(self):
|
|
212
|
+
"""
|
|
213
|
+
Return the quadratic form preserved by the symplectic group.
|
|
214
|
+
|
|
215
|
+
OUTPUT: a matrix
|
|
216
|
+
|
|
217
|
+
EXAMPLES::
|
|
218
|
+
|
|
219
|
+
sage: Sp(4, QQ).invariant_form()
|
|
220
|
+
[ 0 0 0 1]
|
|
221
|
+
[ 0 0 1 0]
|
|
222
|
+
[ 0 -1 0 0]
|
|
223
|
+
[-1 0 0 0]
|
|
224
|
+
"""
|
|
225
|
+
if self._invariant_form is not None:
|
|
226
|
+
return self._invariant_form
|
|
227
|
+
|
|
228
|
+
R = self.base_ring()
|
|
229
|
+
d = self.degree()
|
|
230
|
+
from sage.matrix.constructor import zero_matrix
|
|
231
|
+
m = zero_matrix(R, d)
|
|
232
|
+
for i in range(d):
|
|
233
|
+
m[i, d-i-1] = 1 if i < d/2 else -1
|
|
234
|
+
m.set_immutable()
|
|
235
|
+
return m
|
|
236
|
+
|
|
237
|
+
def _check_matrix(self, x, *args):
|
|
238
|
+
"""
|
|
239
|
+
Check whether the matrix ``x`` is symplectic.
|
|
240
|
+
|
|
241
|
+
See :meth:`~sage.groups.matrix_gps.matrix_group._check_matrix`
|
|
242
|
+
for details.
|
|
243
|
+
|
|
244
|
+
EXAMPLES::
|
|
245
|
+
|
|
246
|
+
sage: G = Sp(4, GF(5))
|
|
247
|
+
sage: G._check_matrix(G.an_element().matrix())
|
|
248
|
+
"""
|
|
249
|
+
F = self.invariant_form()
|
|
250
|
+
if x * F * x.transpose() != F:
|
|
251
|
+
raise TypeError('matrix must be symplectic with respect to the alternating form\n{}'.format(F))
|
|
@@ -0,0 +1,436 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
r"""
|
|
3
|
+
Unitary Groups `GU(n,q)` and `SU(n,q)`
|
|
4
|
+
|
|
5
|
+
These are `n \times n` unitary matrices with entries in
|
|
6
|
+
`GF(q^2)`.
|
|
7
|
+
|
|
8
|
+
EXAMPLES::
|
|
9
|
+
|
|
10
|
+
sage: # needs sage.rings.finite_rings
|
|
11
|
+
sage: G = SU(3,5)
|
|
12
|
+
sage: G.order() # needs sage.libs.gap
|
|
13
|
+
378000
|
|
14
|
+
sage: G
|
|
15
|
+
Special Unitary Group of degree 3 over Finite Field in a of size 5^2
|
|
16
|
+
sage: G.gens() # needs sage.libs.gap
|
|
17
|
+
(
|
|
18
|
+
[ a 0 0] [4*a 4 1]
|
|
19
|
+
[ 0 2*a + 2 0] [ 4 4 0]
|
|
20
|
+
[ 0 0 3*a], [ 1 0 0]
|
|
21
|
+
)
|
|
22
|
+
sage: G.base_ring()
|
|
23
|
+
Finite Field in a of size 5^2
|
|
24
|
+
|
|
25
|
+
AUTHORS:
|
|
26
|
+
|
|
27
|
+
- David Joyner (2006-03): initial version, modified from
|
|
28
|
+
special_linear (by W. Stein)
|
|
29
|
+
|
|
30
|
+
- David Joyner (2006-05): minor additions (examples, _latex_, __str__,
|
|
31
|
+
gens)
|
|
32
|
+
|
|
33
|
+
- William Stein (2006-12): rewrite
|
|
34
|
+
|
|
35
|
+
- Volker Braun (2013-1) port to new Parent, libGAP, extreme refactoring.
|
|
36
|
+
|
|
37
|
+
- Sebastian Oehms (2018-8) add ``_UG``,
|
|
38
|
+
:meth:`~sage.groups.matrix_gps.unitary.UnitaryMatrixGroup_generic.invariant_form`,
|
|
39
|
+
option for user defined invariant bilinear form, and bug-fix in
|
|
40
|
+
``_check_matrix`` (see :issue:`26028`)
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
# ****************************************************************************
|
|
44
|
+
# Copyright (C) 2006 David Joyner and William Stein
|
|
45
|
+
# 2012 Rob Beezer
|
|
46
|
+
# 2013 Volker Braun <vbraun.name@gmail.com>
|
|
47
|
+
# 2018 Sebastian Oehms
|
|
48
|
+
# 2018 Travis Scrimshaw
|
|
49
|
+
# 2019 Jeroen Demeyer
|
|
50
|
+
# 2023 Matthias Koeppe
|
|
51
|
+
#
|
|
52
|
+
# This program is free software: you can redistribute it and/or modify
|
|
53
|
+
# it under the terms of the GNU General Public License as published by
|
|
54
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
55
|
+
# (at your option) any later version.
|
|
56
|
+
# https://www.gnu.org/licenses/
|
|
57
|
+
# ****************************************************************************
|
|
58
|
+
|
|
59
|
+
from sage.rings.finite_rings.finite_field_constructor import GF
|
|
60
|
+
from sage.rings.finite_rings.finite_field_base import FiniteField
|
|
61
|
+
from sage.misc.latex import latex
|
|
62
|
+
from sage.misc.cachefunc import cached_method
|
|
63
|
+
from sage.groups.matrix_gps.named_group import (
|
|
64
|
+
normalize_args_vectorspace, normalize_args_invariant_form,
|
|
65
|
+
NamedMatrixGroup_generic)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def finite_field_sqrt(ring):
|
|
69
|
+
"""
|
|
70
|
+
Helper function.
|
|
71
|
+
|
|
72
|
+
OUTPUT: integer `q` such that ``ring`` is the finite field with `q^2` elements
|
|
73
|
+
|
|
74
|
+
EXAMPLES::
|
|
75
|
+
|
|
76
|
+
sage: from sage.groups.matrix_gps.unitary import finite_field_sqrt
|
|
77
|
+
sage: finite_field_sqrt(GF(4, 'a')) # needs sage.rings.finite_rings
|
|
78
|
+
2
|
|
79
|
+
"""
|
|
80
|
+
if not isinstance(ring, FiniteField):
|
|
81
|
+
raise ValueError('not a finite field')
|
|
82
|
+
q, rem = ring.cardinality().sqrtrem()
|
|
83
|
+
if rem:
|
|
84
|
+
raise ValueError('cardinality not a square')
|
|
85
|
+
return q
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
###############################################################################
|
|
89
|
+
# Unitary Group: common Code for both GU and SU
|
|
90
|
+
###############################################################################
|
|
91
|
+
|
|
92
|
+
def _UG(n, R, special, var='a', invariant_form=None):
|
|
93
|
+
r"""
|
|
94
|
+
This function is commonly used by the functions :func:`GU` and :func:`SU`
|
|
95
|
+
to avoid duplicated code. For documentation and examples
|
|
96
|
+
see the individual functions.
|
|
97
|
+
|
|
98
|
+
TESTS::
|
|
99
|
+
|
|
100
|
+
sage: GU(3,25).order() # indirect doctest # needs sage.libs.gap sage.rings.finite_rings
|
|
101
|
+
3961191000000
|
|
102
|
+
"""
|
|
103
|
+
prefix = 'General'
|
|
104
|
+
latex_prefix = 'G'
|
|
105
|
+
if special:
|
|
106
|
+
prefix = 'Special'
|
|
107
|
+
latex_prefix = 'S'
|
|
108
|
+
|
|
109
|
+
degree, ring = normalize_args_vectorspace(n, R, var=var)
|
|
110
|
+
if isinstance(ring, FiniteField):
|
|
111
|
+
q = ring.cardinality()
|
|
112
|
+
ring = GF(q**2, name=var)
|
|
113
|
+
if invariant_form is not None:
|
|
114
|
+
raise NotImplementedError("invariant_form for finite groups is fixed by GAP")
|
|
115
|
+
|
|
116
|
+
if invariant_form is not None:
|
|
117
|
+
invariant_form = normalize_args_invariant_form(ring, degree, invariant_form)
|
|
118
|
+
if not invariant_form.is_hermitian():
|
|
119
|
+
raise ValueError("invariant_form must be hermitian")
|
|
120
|
+
|
|
121
|
+
try:
|
|
122
|
+
if invariant_form.is_positive_definite():
|
|
123
|
+
inserted_text = "with respect to positive definite hermitian form"
|
|
124
|
+
else:
|
|
125
|
+
inserted_text = "with respect to non positive definite hermitian form"
|
|
126
|
+
except ValueError:
|
|
127
|
+
inserted_text = "with respect to hermitian form"
|
|
128
|
+
|
|
129
|
+
name = '{0} Unitary Group of degree {1} over {2} {3}\n{4}'.format(prefix,
|
|
130
|
+
degree, ring, inserted_text, invariant_form)
|
|
131
|
+
ltx = r'\text{{{0}U}}_{{{1}}}({2})\text{{ {3} }}{4}'.format(latex_prefix,
|
|
132
|
+
degree, latex(ring), inserted_text, latex(invariant_form))
|
|
133
|
+
else:
|
|
134
|
+
name = '{0} Unitary Group of degree {1} over {2}'.format(prefix, degree, ring)
|
|
135
|
+
ltx = r'\text{{{0}U}}_{{{1}}}({2})'.format(latex_prefix, degree, latex(ring))
|
|
136
|
+
|
|
137
|
+
if isinstance(ring, FiniteField):
|
|
138
|
+
try:
|
|
139
|
+
from .unitary_gap import UnitaryMatrixGroup_gap
|
|
140
|
+
except ImportError:
|
|
141
|
+
pass
|
|
142
|
+
else:
|
|
143
|
+
cmd = '{0}U({1}, {2})'.format(latex_prefix, degree, q)
|
|
144
|
+
return UnitaryMatrixGroup_gap(degree, ring, special, name, ltx, cmd)
|
|
145
|
+
|
|
146
|
+
return UnitaryMatrixGroup_generic(degree, ring, special, name, ltx,
|
|
147
|
+
invariant_form=invariant_form)
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
###############################################################################
|
|
151
|
+
# General Unitary Group
|
|
152
|
+
###############################################################################
|
|
153
|
+
|
|
154
|
+
def GU(n, R, var='a', invariant_form=None):
|
|
155
|
+
r"""
|
|
156
|
+
Return the general unitary group.
|
|
157
|
+
|
|
158
|
+
The general unitary group `GU( d, R )` consists of all `d \times d`
|
|
159
|
+
matrices that preserve a nondegenerate sesquilinear form over the
|
|
160
|
+
ring `R`.
|
|
161
|
+
|
|
162
|
+
.. NOTE::
|
|
163
|
+
|
|
164
|
+
For a finite field, the matrices that preserve a sesquilinear
|
|
165
|
+
form over `\GF{q}` live over `\GF{q^2}`. So ``GU(n,q)`` for
|
|
166
|
+
a prime power `q` constructs the matrix group over the base
|
|
167
|
+
ring ``GF(q^2)``.
|
|
168
|
+
|
|
169
|
+
.. NOTE::
|
|
170
|
+
|
|
171
|
+
This group is also available via ``groups.matrix.GU()``.
|
|
172
|
+
|
|
173
|
+
INPUT:
|
|
174
|
+
|
|
175
|
+
- ``n`` -- positive integer
|
|
176
|
+
|
|
177
|
+
- ``R`` -- ring or an integer; if an integer is specified, the
|
|
178
|
+
corresponding finite field is used
|
|
179
|
+
|
|
180
|
+
- ``var`` -- (default: ``'a'``) variable used to
|
|
181
|
+
represent generator of the finite field, if needed
|
|
182
|
+
|
|
183
|
+
- ``invariant_form`` -- (optional) instances being accepted by
|
|
184
|
+
the matrix-constructor which define a `n \times n` square matrix
|
|
185
|
+
over `R` describing the hermitian form to be kept invariant
|
|
186
|
+
by the unitary group; the form is checked to be
|
|
187
|
+
non-degenerate and hermitian but not to be positive definite
|
|
188
|
+
|
|
189
|
+
OUTPUT: the general unitary group
|
|
190
|
+
|
|
191
|
+
EXAMPLES::
|
|
192
|
+
|
|
193
|
+
sage: G = GU(3, 7); G # needs sage.rings.finite_rings
|
|
194
|
+
General Unitary Group of degree 3 over Finite Field in a of size 7^2
|
|
195
|
+
sage: G.gens() # needs sage.libs.gap sage.rings.finite_rings
|
|
196
|
+
(
|
|
197
|
+
[ a 0 0] [6*a 6 1]
|
|
198
|
+
[ 0 1 0] [ 6 6 0]
|
|
199
|
+
[ 0 0 5*a], [ 1 0 0]
|
|
200
|
+
)
|
|
201
|
+
sage: GU(2, QQ)
|
|
202
|
+
General Unitary Group of degree 2 over Rational Field
|
|
203
|
+
|
|
204
|
+
sage: G = GU(3, 5, var='beta') # needs sage.rings.finite_rings
|
|
205
|
+
sage: G.base_ring() # needs sage.rings.finite_rings
|
|
206
|
+
Finite Field in beta of size 5^2
|
|
207
|
+
sage: G.gens() # needs sage.libs.gap sage.rings.finite_rings
|
|
208
|
+
(
|
|
209
|
+
[ beta 0 0] [4*beta 4 1]
|
|
210
|
+
[ 0 1 0] [ 4 4 0]
|
|
211
|
+
[ 0 0 3*beta], [ 1 0 0]
|
|
212
|
+
)
|
|
213
|
+
|
|
214
|
+
Using the ``invariant_form`` option::
|
|
215
|
+
|
|
216
|
+
sage: # needs sage.libs.gap sage.rings.number_field
|
|
217
|
+
sage: UCF = UniversalCyclotomicField(); e5 = UCF.gen(5)
|
|
218
|
+
sage: m = matrix(UCF, 3, 3, [[1,e5,0], [e5.conjugate(),2,0], [0,0,1]])
|
|
219
|
+
sage: G = GU(3, UCF)
|
|
220
|
+
sage: Gm = GU(3, UCF, invariant_form=m)
|
|
221
|
+
sage: G == Gm
|
|
222
|
+
False
|
|
223
|
+
sage: G.invariant_form()
|
|
224
|
+
[1 0 0]
|
|
225
|
+
[0 1 0]
|
|
226
|
+
[0 0 1]
|
|
227
|
+
sage: Gm.invariant_form()
|
|
228
|
+
[ 1 E(5) 0]
|
|
229
|
+
[E(5)^4 2 0]
|
|
230
|
+
[ 0 0 1]
|
|
231
|
+
sage: pm = Permutation((1,2,3)).to_matrix()
|
|
232
|
+
sage: g = G(pm); g in G; g # needs sage.combinat
|
|
233
|
+
True
|
|
234
|
+
[0 0 1]
|
|
235
|
+
[1 0 0]
|
|
236
|
+
[0 1 0]
|
|
237
|
+
sage: Gm(pm) # needs sage.combinat
|
|
238
|
+
Traceback (most recent call last):
|
|
239
|
+
...
|
|
240
|
+
TypeError: matrix must be unitary with respect to the hermitian form
|
|
241
|
+
[ 1 E(5) 0]
|
|
242
|
+
[E(5)^4 2 0]
|
|
243
|
+
[ 0 0 1]
|
|
244
|
+
|
|
245
|
+
sage: GU(3, 3, invariant_form=[[1,0,0], [0,2,0], [0,0,1]]) # needs sage.libs.pari
|
|
246
|
+
Traceback (most recent call last):
|
|
247
|
+
...
|
|
248
|
+
NotImplementedError: invariant_form for finite groups is fixed by GAP
|
|
249
|
+
|
|
250
|
+
sage: GU(2, QQ, invariant_form=[[1,0], [2,0]])
|
|
251
|
+
Traceback (most recent call last):
|
|
252
|
+
...
|
|
253
|
+
ValueError: invariant_form must be non-degenerate
|
|
254
|
+
|
|
255
|
+
TESTS::
|
|
256
|
+
|
|
257
|
+
sage: TestSuite(G).run() # needs sage.libs.gap sage.rings.number_field
|
|
258
|
+
sage: groups.matrix.GU(2, 3) # needs sage.groups sage.rings.finite_rings
|
|
259
|
+
General Unitary Group of degree 2 over Finite Field in a of size 3^2
|
|
260
|
+
"""
|
|
261
|
+
return _UG(n, R, False, var=var, invariant_form=invariant_form)
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
###############################################################################
|
|
265
|
+
# Special Unitary Group
|
|
266
|
+
###############################################################################
|
|
267
|
+
|
|
268
|
+
def SU(n, R, var='a', invariant_form=None):
|
|
269
|
+
r"""
|
|
270
|
+
The special unitary group `SU( d, R )` consists of all `d \times d`
|
|
271
|
+
matrices that preserve a nondegenerate sesquilinear form over the
|
|
272
|
+
ring `R` and have determinant `1`.
|
|
273
|
+
|
|
274
|
+
.. NOTE::
|
|
275
|
+
|
|
276
|
+
For a finite field the matrices that preserve a sesquilinear
|
|
277
|
+
form over `\GF{q}` live over `\GF{q^2}`. So ``SU(n,q)`` for
|
|
278
|
+
a prime power `q` constructs the matrix group over the base
|
|
279
|
+
ring ``GF(q^2)``.
|
|
280
|
+
|
|
281
|
+
.. NOTE::
|
|
282
|
+
|
|
283
|
+
This group is also available via ``groups.matrix.SU()``.
|
|
284
|
+
|
|
285
|
+
INPUT:
|
|
286
|
+
|
|
287
|
+
- ``n`` -- positive integer
|
|
288
|
+
|
|
289
|
+
- ``R`` -- ring or an integer; if an integer is specified, the
|
|
290
|
+
corresponding finite field is used
|
|
291
|
+
|
|
292
|
+
- ``var`` -- (default: ``'a'``) variable used to
|
|
293
|
+
represent generator of the finite field, if needed
|
|
294
|
+
|
|
295
|
+
- ``invariant_form`` -- (optional) instances being accepted by
|
|
296
|
+
the matrix-constructor which define a `n \times n` square matrix
|
|
297
|
+
over R describing the hermitian form to be kept invariant
|
|
298
|
+
by the unitary group; the form is checked to be
|
|
299
|
+
non-degenerate and hermitian but not to be positive definite
|
|
300
|
+
|
|
301
|
+
OUTPUT: the special unitary group
|
|
302
|
+
|
|
303
|
+
EXAMPLES::
|
|
304
|
+
|
|
305
|
+
sage: SU(3,5) # needs sage.rings.finite_rings
|
|
306
|
+
Special Unitary Group of degree 3 over Finite Field in a of size 5^2
|
|
307
|
+
sage: SU(3, GF(5)) # needs sage.rings.finite_rings
|
|
308
|
+
Special Unitary Group of degree 3 over Finite Field in a of size 5^2
|
|
309
|
+
sage: SU(3, QQ)
|
|
310
|
+
Special Unitary Group of degree 3 over Rational Field
|
|
311
|
+
|
|
312
|
+
Using the ``invariant_form`` option::
|
|
313
|
+
|
|
314
|
+
sage: # needs sage.rings.number_field
|
|
315
|
+
sage: CF3 = CyclotomicField(3); e3 = CF3.gen()
|
|
316
|
+
sage: m = matrix(CF3, 3, 3, [[1,e3,0], [e3.conjugate(),2,0], [0,0,1]])
|
|
317
|
+
sage: G = SU(3, CF3)
|
|
318
|
+
sage: Gm = SU(3, CF3, invariant_form=m)
|
|
319
|
+
sage: G == Gm
|
|
320
|
+
False
|
|
321
|
+
sage: G.invariant_form()
|
|
322
|
+
[1 0 0]
|
|
323
|
+
[0 1 0]
|
|
324
|
+
[0 0 1]
|
|
325
|
+
sage: Gm.invariant_form()
|
|
326
|
+
[ 1 zeta3 0]
|
|
327
|
+
[-zeta3 - 1 2 0]
|
|
328
|
+
[ 0 0 1]
|
|
329
|
+
sage: pm = Permutation((1,2,3)).to_matrix()
|
|
330
|
+
sage: G(pm) # needs sage.combinat
|
|
331
|
+
[0 0 1]
|
|
332
|
+
[1 0 0]
|
|
333
|
+
[0 1 0]
|
|
334
|
+
sage: Gm(pm) # needs sage.combinat
|
|
335
|
+
Traceback (most recent call last):
|
|
336
|
+
...
|
|
337
|
+
TypeError: matrix must be unitary with respect to the hermitian form
|
|
338
|
+
[ 1 zeta3 0]
|
|
339
|
+
[-zeta3 - 1 2 0]
|
|
340
|
+
[ 0 0 1]
|
|
341
|
+
|
|
342
|
+
sage: SU(3, 5, invariant_form=[[1,0,0], [0,2,0], [0,0,3]]) # needs sage.rings.finite_rings
|
|
343
|
+
Traceback (most recent call last):
|
|
344
|
+
...
|
|
345
|
+
NotImplementedError: invariant_form for finite groups is fixed by GAP
|
|
346
|
+
|
|
347
|
+
TESTS::
|
|
348
|
+
|
|
349
|
+
sage: TestSuite(Gm).run() # needs sage.rings.number_field
|
|
350
|
+
sage: groups.matrix.SU(2, 3) # needs sage.modules sage.rings.finite_rings
|
|
351
|
+
Special Unitary Group of degree 2 over Finite Field in a of size 3^2
|
|
352
|
+
"""
|
|
353
|
+
return _UG(n, R, True, var=var, invariant_form=invariant_form)
|
|
354
|
+
|
|
355
|
+
|
|
356
|
+
########################################################################
|
|
357
|
+
# Unitary Group class
|
|
358
|
+
########################################################################
|
|
359
|
+
|
|
360
|
+
class UnitaryMatrixGroup_generic(NamedMatrixGroup_generic):
|
|
361
|
+
r"""
|
|
362
|
+
General Unitary Group over arbitrary rings.
|
|
363
|
+
|
|
364
|
+
EXAMPLES::
|
|
365
|
+
|
|
366
|
+
sage: G = GU(3, GF(7)); G # needs sage.rings.finite_rings
|
|
367
|
+
General Unitary Group of degree 3 over Finite Field in a of size 7^2
|
|
368
|
+
sage: latex(G) # needs sage.rings.finite_rings
|
|
369
|
+
\text{GU}_{3}(\Bold{F}_{7^{2}})
|
|
370
|
+
|
|
371
|
+
sage: G = SU(3, GF(5)); G # needs sage.rings.finite_rings
|
|
372
|
+
Special Unitary Group of degree 3 over Finite Field in a of size 5^2
|
|
373
|
+
sage: latex(G) # needs sage.rings.finite_rings
|
|
374
|
+
\text{SU}_{3}(\Bold{F}_{5^{2}})
|
|
375
|
+
|
|
376
|
+
sage: # needs sage.rings.number_field
|
|
377
|
+
sage: CF3 = CyclotomicField(3); e3 = CF3.gen()
|
|
378
|
+
sage: m = matrix(CF3, 3, 3, [[1,e3,0], [e3.conjugate(),2,0], [0,0,1]])
|
|
379
|
+
sage: G = SU(3, CF3, invariant_form=m)
|
|
380
|
+
sage: latex(G)
|
|
381
|
+
\text{SU}_{3}(\Bold{Q}(\zeta_{3}))\text{ with respect to positive definite hermitian form }\left(\begin{array}{rrr}
|
|
382
|
+
1 & \zeta_{3} & 0 \\
|
|
383
|
+
-\zeta_{3} - 1 & 2 & 0 \\
|
|
384
|
+
0 & 0 & 1
|
|
385
|
+
\end{array}\right)
|
|
386
|
+
"""
|
|
387
|
+
|
|
388
|
+
@cached_method
|
|
389
|
+
def invariant_form(self):
|
|
390
|
+
"""
|
|
391
|
+
Return the hermitian form preserved by the unitary
|
|
392
|
+
group.
|
|
393
|
+
|
|
394
|
+
OUTPUT: a square matrix describing the bilinear form
|
|
395
|
+
|
|
396
|
+
EXAMPLES::
|
|
397
|
+
|
|
398
|
+
sage: SU4 = SU(4, QQ)
|
|
399
|
+
sage: SU4.invariant_form()
|
|
400
|
+
[1 0 0 0]
|
|
401
|
+
[0 1 0 0]
|
|
402
|
+
[0 0 1 0]
|
|
403
|
+
[0 0 0 1]
|
|
404
|
+
"""
|
|
405
|
+
if self._invariant_form is not None:
|
|
406
|
+
return self._invariant_form
|
|
407
|
+
|
|
408
|
+
from sage.matrix.constructor import identity_matrix
|
|
409
|
+
m = identity_matrix(self.base_ring(), self.degree())
|
|
410
|
+
m.set_immutable()
|
|
411
|
+
return m
|
|
412
|
+
|
|
413
|
+
def _check_matrix(self, x, *args):
|
|
414
|
+
"""
|
|
415
|
+
Check whether the matrix ``x`` is unitary.
|
|
416
|
+
|
|
417
|
+
See :meth:`~sage.groups.matrix_gps.matrix_group._check_matrix`
|
|
418
|
+
for details.
|
|
419
|
+
|
|
420
|
+
EXAMPLES::
|
|
421
|
+
|
|
422
|
+
sage: # needs sage.rings.finite_rings
|
|
423
|
+
sage: G = GU(2, GF(5))
|
|
424
|
+
sage: G._check_matrix(G.an_element().matrix())
|
|
425
|
+
sage: G = SU(2, GF(5))
|
|
426
|
+
sage: G._check_matrix(G.an_element().matrix())
|
|
427
|
+
"""
|
|
428
|
+
if self._special and x.determinant() != 1:
|
|
429
|
+
raise TypeError('matrix must have determinant one')
|
|
430
|
+
|
|
431
|
+
H = self.invariant_form()
|
|
432
|
+
if x * H * x.conjugate_transpose() != H:
|
|
433
|
+
if H == self.one().matrix():
|
|
434
|
+
raise TypeError('matrix must be unitary')
|
|
435
|
+
else:
|
|
436
|
+
raise TypeError('matrix must be unitary with respect to the hermitian form\n{}'.format(H))
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|