passagemath-modules 10.6.31rc3__cp314-cp314-musllinux_1_2_aarch64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of passagemath-modules might be problematic. Click here for more details.
- passagemath_modules-10.6.31rc3.dist-info/METADATA +281 -0
- passagemath_modules-10.6.31rc3.dist-info/RECORD +807 -0
- passagemath_modules-10.6.31rc3.dist-info/WHEEL +5 -0
- passagemath_modules-10.6.31rc3.dist-info/top_level.txt +2 -0
- passagemath_modules.libs/libgcc_s-2d945d6c.so.1 +0 -0
- passagemath_modules.libs/libgfortran-67378ab2.so.5.0.0 +0 -0
- passagemath_modules.libs/libgmp-28992bcb.so.10.5.0 +0 -0
- passagemath_modules.libs/libgsl-23768756.so.28.0.0 +0 -0
- passagemath_modules.libs/libmpc-7897025b.so.3.3.1 +0 -0
- passagemath_modules.libs/libmpfr-e34bb864.so.6.2.1 +0 -0
- passagemath_modules.libs/libopenblasp-r0-503f0c35.3.29.so +0 -0
- sage/algebras/all__sagemath_modules.py +20 -0
- sage/algebras/catalog.py +148 -0
- sage/algebras/clifford_algebra.py +3107 -0
- sage/algebras/clifford_algebra_element.cpython-314-aarch64-linux-musl.so +0 -0
- sage/algebras/clifford_algebra_element.pxd +16 -0
- sage/algebras/clifford_algebra_element.pyx +997 -0
- sage/algebras/commutative_dga.py +4252 -0
- sage/algebras/exterior_algebra_groebner.cpython-314-aarch64-linux-musl.so +0 -0
- sage/algebras/exterior_algebra_groebner.pxd +55 -0
- sage/algebras/exterior_algebra_groebner.pyx +727 -0
- sage/algebras/finite_dimensional_algebras/all.py +2 -0
- sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra.py +1029 -0
- sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.cpython-314-aarch64-linux-musl.so +0 -0
- sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pxd +12 -0
- sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pyx +706 -0
- sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_ideal.py +196 -0
- sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_morphism.py +255 -0
- sage/algebras/finite_gca.py +528 -0
- sage/algebras/group_algebra.py +232 -0
- sage/algebras/lie_algebras/abelian.py +197 -0
- sage/algebras/lie_algebras/affine_lie_algebra.py +1213 -0
- sage/algebras/lie_algebras/all.py +25 -0
- sage/algebras/lie_algebras/all__sagemath_modules.py +1 -0
- sage/algebras/lie_algebras/bch.py +177 -0
- sage/algebras/lie_algebras/bgg_dual_module.py +1184 -0
- sage/algebras/lie_algebras/bgg_resolution.py +232 -0
- sage/algebras/lie_algebras/center_uea.py +767 -0
- sage/algebras/lie_algebras/classical_lie_algebra.py +2516 -0
- sage/algebras/lie_algebras/examples.py +683 -0
- sage/algebras/lie_algebras/free_lie_algebra.py +973 -0
- sage/algebras/lie_algebras/heisenberg.py +820 -0
- sage/algebras/lie_algebras/lie_algebra.py +1562 -0
- sage/algebras/lie_algebras/lie_algebra_element.cpython-314-aarch64-linux-musl.so +0 -0
- sage/algebras/lie_algebras/lie_algebra_element.pxd +68 -0
- sage/algebras/lie_algebras/lie_algebra_element.pyx +2122 -0
- sage/algebras/lie_algebras/morphism.py +661 -0
- sage/algebras/lie_algebras/nilpotent_lie_algebra.py +457 -0
- sage/algebras/lie_algebras/onsager.py +1324 -0
- sage/algebras/lie_algebras/poincare_birkhoff_witt.py +816 -0
- sage/algebras/lie_algebras/quotient.py +462 -0
- sage/algebras/lie_algebras/rank_two_heisenberg_virasoro.py +355 -0
- sage/algebras/lie_algebras/representation.py +1040 -0
- sage/algebras/lie_algebras/structure_coefficients.py +459 -0
- sage/algebras/lie_algebras/subalgebra.py +967 -0
- sage/algebras/lie_algebras/symplectic_derivation.py +289 -0
- sage/algebras/lie_algebras/verma_module.py +1630 -0
- sage/algebras/lie_algebras/virasoro.py +1186 -0
- sage/algebras/octonion_algebra.cpython-314-aarch64-linux-musl.so +0 -0
- sage/algebras/octonion_algebra.pxd +20 -0
- sage/algebras/octonion_algebra.pyx +987 -0
- sage/algebras/orlik_solomon.py +907 -0
- sage/algebras/orlik_terao.py +779 -0
- sage/algebras/steenrod/all.py +7 -0
- sage/algebras/steenrod/steenrod_algebra.py +4258 -0
- sage/algebras/steenrod/steenrod_algebra_bases.py +1179 -0
- sage/algebras/steenrod/steenrod_algebra_misc.py +1167 -0
- sage/algebras/steenrod/steenrod_algebra_mult.py +954 -0
- sage/algebras/weyl_algebra.py +1126 -0
- sage/all__sagemath_modules.py +62 -0
- sage/calculus/all__sagemath_modules.py +19 -0
- sage/calculus/expr.py +205 -0
- sage/calculus/integration.cpython-314-aarch64-linux-musl.so +0 -0
- sage/calculus/integration.pyx +698 -0
- sage/calculus/interpolation.cpython-314-aarch64-linux-musl.so +0 -0
- sage/calculus/interpolation.pxd +13 -0
- sage/calculus/interpolation.pyx +387 -0
- sage/calculus/interpolators.cpython-314-aarch64-linux-musl.so +0 -0
- sage/calculus/interpolators.pyx +326 -0
- sage/calculus/ode.cpython-314-aarch64-linux-musl.so +0 -0
- sage/calculus/ode.pxd +5 -0
- sage/calculus/ode.pyx +610 -0
- sage/calculus/riemann.cpython-314-aarch64-linux-musl.so +0 -0
- sage/calculus/riemann.pyx +1521 -0
- sage/calculus/test_sympy.py +201 -0
- sage/calculus/transforms/all.py +7 -0
- sage/calculus/transforms/dft.py +844 -0
- sage/calculus/transforms/dwt.cpython-314-aarch64-linux-musl.so +0 -0
- sage/calculus/transforms/dwt.pxd +7 -0
- sage/calculus/transforms/dwt.pyx +160 -0
- sage/calculus/transforms/fft.cpython-314-aarch64-linux-musl.so +0 -0
- sage/calculus/transforms/fft.pxd +12 -0
- sage/calculus/transforms/fft.pyx +487 -0
- sage/calculus/wester.py +662 -0
- sage/coding/abstract_code.py +1108 -0
- sage/coding/ag_code.py +868 -0
- sage/coding/ag_code_decoders.cpython-314-aarch64-linux-musl.so +0 -0
- sage/coding/ag_code_decoders.pyx +2639 -0
- sage/coding/all.py +15 -0
- sage/coding/bch_code.py +494 -0
- sage/coding/binary_code.cpython-314-aarch64-linux-musl.so +0 -0
- sage/coding/binary_code.pxd +124 -0
- sage/coding/binary_code.pyx +4139 -0
- sage/coding/bounds_catalog.py +43 -0
- sage/coding/channel.py +819 -0
- sage/coding/channels_catalog.py +29 -0
- sage/coding/code_bounds.py +755 -0
- sage/coding/code_constructions.py +804 -0
- sage/coding/codes_catalog.py +111 -0
- sage/coding/cyclic_code.py +1329 -0
- sage/coding/databases.py +316 -0
- sage/coding/decoder.py +373 -0
- sage/coding/decoders_catalog.py +88 -0
- sage/coding/delsarte_bounds.py +709 -0
- sage/coding/encoder.py +390 -0
- sage/coding/encoders_catalog.py +64 -0
- sage/coding/extended_code.py +468 -0
- sage/coding/gabidulin_code.py +1058 -0
- sage/coding/golay_code.py +404 -0
- sage/coding/goppa_code.py +441 -0
- sage/coding/grs_code.py +2371 -0
- sage/coding/guava.py +107 -0
- sage/coding/guruswami_sudan/all.py +1 -0
- sage/coding/guruswami_sudan/gs_decoder.py +897 -0
- sage/coding/guruswami_sudan/interpolation.py +409 -0
- sage/coding/guruswami_sudan/utils.py +176 -0
- sage/coding/hamming_code.py +176 -0
- sage/coding/information_set_decoder.py +1032 -0
- sage/coding/kasami_codes.cpython-314-aarch64-linux-musl.so +0 -0
- sage/coding/kasami_codes.pyx +351 -0
- sage/coding/linear_code.py +3067 -0
- sage/coding/linear_code_no_metric.py +1354 -0
- sage/coding/linear_rank_metric.py +961 -0
- sage/coding/parity_check_code.py +353 -0
- sage/coding/punctured_code.py +719 -0
- sage/coding/reed_muller_code.py +999 -0
- sage/coding/self_dual_codes.py +942 -0
- sage/coding/source_coding/all.py +2 -0
- sage/coding/source_coding/huffman.py +553 -0
- sage/coding/subfield_subcode.py +423 -0
- sage/coding/two_weight_db.py +399 -0
- sage/combinat/all__sagemath_modules.py +7 -0
- sage/combinat/cartesian_product.py +347 -0
- sage/combinat/family.py +11 -0
- sage/combinat/free_module.py +1977 -0
- sage/combinat/root_system/all.py +147 -0
- sage/combinat/root_system/ambient_space.py +527 -0
- sage/combinat/root_system/associahedron.py +471 -0
- sage/combinat/root_system/braid_move_calculator.py +143 -0
- sage/combinat/root_system/braid_orbit.cpython-314-aarch64-linux-musl.so +0 -0
- sage/combinat/root_system/braid_orbit.pyx +144 -0
- sage/combinat/root_system/branching_rules.py +2301 -0
- sage/combinat/root_system/cartan_matrix.py +1245 -0
- sage/combinat/root_system/cartan_type.py +3069 -0
- sage/combinat/root_system/coxeter_group.py +162 -0
- sage/combinat/root_system/coxeter_matrix.py +1261 -0
- sage/combinat/root_system/coxeter_type.py +681 -0
- sage/combinat/root_system/dynkin_diagram.py +900 -0
- sage/combinat/root_system/extended_affine_weyl_group.py +2993 -0
- sage/combinat/root_system/fundamental_group.py +795 -0
- sage/combinat/root_system/hecke_algebra_representation.py +1203 -0
- sage/combinat/root_system/integrable_representations.py +1227 -0
- sage/combinat/root_system/non_symmetric_macdonald_polynomials.py +1965 -0
- sage/combinat/root_system/pieri_factors.py +1147 -0
- sage/combinat/root_system/plot.py +1615 -0
- sage/combinat/root_system/root_lattice_realization_algebras.py +1214 -0
- sage/combinat/root_system/root_lattice_realizations.py +4628 -0
- sage/combinat/root_system/root_space.py +487 -0
- sage/combinat/root_system/root_system.py +882 -0
- sage/combinat/root_system/type_A.py +348 -0
- sage/combinat/root_system/type_A_affine.py +227 -0
- sage/combinat/root_system/type_A_infinity.py +241 -0
- sage/combinat/root_system/type_B.py +347 -0
- sage/combinat/root_system/type_BC_affine.py +287 -0
- sage/combinat/root_system/type_B_affine.py +216 -0
- sage/combinat/root_system/type_C.py +317 -0
- sage/combinat/root_system/type_C_affine.py +188 -0
- sage/combinat/root_system/type_D.py +357 -0
- sage/combinat/root_system/type_D_affine.py +208 -0
- sage/combinat/root_system/type_E.py +641 -0
- sage/combinat/root_system/type_E_affine.py +231 -0
- sage/combinat/root_system/type_F.py +387 -0
- sage/combinat/root_system/type_F_affine.py +137 -0
- sage/combinat/root_system/type_G.py +293 -0
- sage/combinat/root_system/type_G_affine.py +132 -0
- sage/combinat/root_system/type_H.py +105 -0
- sage/combinat/root_system/type_I.py +110 -0
- sage/combinat/root_system/type_Q.py +150 -0
- sage/combinat/root_system/type_affine.py +509 -0
- sage/combinat/root_system/type_dual.py +704 -0
- sage/combinat/root_system/type_folded.py +301 -0
- sage/combinat/root_system/type_marked.py +748 -0
- sage/combinat/root_system/type_reducible.py +601 -0
- sage/combinat/root_system/type_relabel.py +730 -0
- sage/combinat/root_system/type_super_A.py +837 -0
- sage/combinat/root_system/weight_lattice_realizations.py +1188 -0
- sage/combinat/root_system/weight_space.py +639 -0
- sage/combinat/root_system/weyl_characters.py +2238 -0
- sage/crypto/__init__.py +4 -0
- sage/crypto/all.py +28 -0
- sage/crypto/block_cipher/all.py +7 -0
- sage/crypto/block_cipher/des.py +1065 -0
- sage/crypto/block_cipher/miniaes.py +2171 -0
- sage/crypto/block_cipher/present.py +909 -0
- sage/crypto/block_cipher/sdes.py +1527 -0
- sage/crypto/boolean_function.cpython-314-aarch64-linux-musl.so +0 -0
- sage/crypto/boolean_function.pxd +10 -0
- sage/crypto/boolean_function.pyx +1487 -0
- sage/crypto/cipher.py +78 -0
- sage/crypto/classical.py +3668 -0
- sage/crypto/classical_cipher.py +569 -0
- sage/crypto/cryptosystem.py +387 -0
- sage/crypto/key_exchange/all.py +7 -0
- sage/crypto/key_exchange/catalog.py +24 -0
- sage/crypto/key_exchange/diffie_hellman.py +323 -0
- sage/crypto/key_exchange/key_exchange_scheme.py +107 -0
- sage/crypto/lattice.py +312 -0
- sage/crypto/lfsr.py +295 -0
- sage/crypto/lwe.py +840 -0
- sage/crypto/mq/__init__.py +4 -0
- sage/crypto/mq/mpolynomialsystemgenerator.py +204 -0
- sage/crypto/mq/rijndael_gf.py +2345 -0
- sage/crypto/mq/sbox.py +7 -0
- sage/crypto/mq/sr.py +3344 -0
- sage/crypto/public_key/all.py +5 -0
- sage/crypto/public_key/blum_goldwasser.py +776 -0
- sage/crypto/sbox.cpython-314-aarch64-linux-musl.so +0 -0
- sage/crypto/sbox.pyx +2090 -0
- sage/crypto/sboxes.py +2090 -0
- sage/crypto/stream.py +390 -0
- sage/crypto/stream_cipher.py +297 -0
- sage/crypto/util.py +519 -0
- sage/ext/all__sagemath_modules.py +1 -0
- sage/ext/interpreters/__init__.py +1 -0
- sage/ext/interpreters/all__sagemath_modules.py +2 -0
- sage/ext/interpreters/wrapper_cc.cpython-314-aarch64-linux-musl.so +0 -0
- sage/ext/interpreters/wrapper_cc.pxd +30 -0
- sage/ext/interpreters/wrapper_cc.pyx +252 -0
- sage/ext/interpreters/wrapper_cdf.cpython-314-aarch64-linux-musl.so +0 -0
- sage/ext/interpreters/wrapper_cdf.pxd +26 -0
- sage/ext/interpreters/wrapper_cdf.pyx +245 -0
- sage/ext/interpreters/wrapper_rdf.cpython-314-aarch64-linux-musl.so +0 -0
- sage/ext/interpreters/wrapper_rdf.pxd +23 -0
- sage/ext/interpreters/wrapper_rdf.pyx +221 -0
- sage/ext/interpreters/wrapper_rr.cpython-314-aarch64-linux-musl.so +0 -0
- sage/ext/interpreters/wrapper_rr.pxd +28 -0
- sage/ext/interpreters/wrapper_rr.pyx +335 -0
- sage/geometry/all__sagemath_modules.py +5 -0
- sage/geometry/toric_lattice.py +1745 -0
- sage/geometry/toric_lattice_element.cpython-314-aarch64-linux-musl.so +0 -0
- sage/geometry/toric_lattice_element.pyx +432 -0
- sage/groups/abelian_gps/abelian_group.py +1925 -0
- sage/groups/abelian_gps/abelian_group_element.py +164 -0
- sage/groups/abelian_gps/all__sagemath_modules.py +5 -0
- sage/groups/abelian_gps/dual_abelian_group.py +421 -0
- sage/groups/abelian_gps/dual_abelian_group_element.py +179 -0
- sage/groups/abelian_gps/element_base.py +341 -0
- sage/groups/abelian_gps/values.py +488 -0
- sage/groups/additive_abelian/additive_abelian_group.py +476 -0
- sage/groups/additive_abelian/additive_abelian_wrapper.py +857 -0
- sage/groups/additive_abelian/all.py +4 -0
- sage/groups/additive_abelian/qmodnz.py +231 -0
- sage/groups/additive_abelian/qmodnz_element.py +349 -0
- sage/groups/affine_gps/affine_group.py +535 -0
- sage/groups/affine_gps/all.py +1 -0
- sage/groups/affine_gps/catalog.py +17 -0
- sage/groups/affine_gps/euclidean_group.py +246 -0
- sage/groups/affine_gps/group_element.py +562 -0
- sage/groups/all__sagemath_modules.py +12 -0
- sage/groups/galois_group.py +479 -0
- sage/groups/matrix_gps/all.py +4 -0
- sage/groups/matrix_gps/all__sagemath_modules.py +13 -0
- sage/groups/matrix_gps/catalog.py +26 -0
- sage/groups/matrix_gps/coxeter_group.py +927 -0
- sage/groups/matrix_gps/finitely_generated.py +487 -0
- sage/groups/matrix_gps/group_element.cpython-314-aarch64-linux-musl.so +0 -0
- sage/groups/matrix_gps/group_element.pxd +11 -0
- sage/groups/matrix_gps/group_element.pyx +431 -0
- sage/groups/matrix_gps/linear.py +440 -0
- sage/groups/matrix_gps/matrix_group.py +617 -0
- sage/groups/matrix_gps/named_group.py +296 -0
- sage/groups/matrix_gps/orthogonal.py +544 -0
- sage/groups/matrix_gps/symplectic.py +251 -0
- sage/groups/matrix_gps/unitary.py +436 -0
- sage/groups/misc_gps/all__sagemath_modules.py +1 -0
- sage/groups/misc_gps/argument_groups.py +1905 -0
- sage/groups/misc_gps/imaginary_groups.py +479 -0
- sage/groups/perm_gps/all__sagemath_modules.py +1 -0
- sage/groups/perm_gps/partn_ref/all__sagemath_modules.py +1 -0
- sage/groups/perm_gps/partn_ref/refinement_binary.cpython-314-aarch64-linux-musl.so +0 -0
- sage/groups/perm_gps/partn_ref/refinement_binary.pxd +41 -0
- sage/groups/perm_gps/partn_ref/refinement_binary.pyx +1167 -0
- sage/groups/perm_gps/partn_ref/refinement_matrices.cpython-314-aarch64-linux-musl.so +0 -0
- sage/groups/perm_gps/partn_ref/refinement_matrices.pxd +31 -0
- sage/groups/perm_gps/partn_ref/refinement_matrices.pyx +385 -0
- sage/homology/algebraic_topological_model.py +595 -0
- sage/homology/all.py +2 -0
- sage/homology/all__sagemath_modules.py +8 -0
- sage/homology/chain_complex.py +2148 -0
- sage/homology/chain_complex_homspace.py +165 -0
- sage/homology/chain_complex_morphism.py +629 -0
- sage/homology/chain_homotopy.py +604 -0
- sage/homology/chains.py +653 -0
- sage/homology/free_resolution.py +923 -0
- sage/homology/graded_resolution.py +567 -0
- sage/homology/hochschild_complex.py +756 -0
- sage/homology/homology_group.py +188 -0
- sage/homology/homology_morphism.py +422 -0
- sage/homology/homology_vector_space_with_basis.py +1454 -0
- sage/homology/koszul_complex.py +169 -0
- sage/homology/matrix_utils.py +205 -0
- sage/libs/all__sagemath_modules.py +1 -0
- sage/libs/gsl/__init__.py +1 -0
- sage/libs/gsl/airy.pxd +56 -0
- sage/libs/gsl/all.pxd +66 -0
- sage/libs/gsl/array.cpython-314-aarch64-linux-musl.so +0 -0
- sage/libs/gsl/array.pxd +5 -0
- sage/libs/gsl/array.pyx +102 -0
- sage/libs/gsl/bessel.pxd +208 -0
- sage/libs/gsl/blas.pxd +116 -0
- sage/libs/gsl/blas_types.pxd +34 -0
- sage/libs/gsl/block.pxd +52 -0
- sage/libs/gsl/chebyshev.pxd +37 -0
- sage/libs/gsl/clausen.pxd +12 -0
- sage/libs/gsl/combination.pxd +47 -0
- sage/libs/gsl/complex.pxd +151 -0
- sage/libs/gsl/coulomb.pxd +30 -0
- sage/libs/gsl/coupling.pxd +21 -0
- sage/libs/gsl/dawson.pxd +12 -0
- sage/libs/gsl/debye.pxd +24 -0
- sage/libs/gsl/dilog.pxd +14 -0
- sage/libs/gsl/eigen.pxd +46 -0
- sage/libs/gsl/elementary.pxd +12 -0
- sage/libs/gsl/ellint.pxd +48 -0
- sage/libs/gsl/elljac.pxd +8 -0
- sage/libs/gsl/erf.pxd +32 -0
- sage/libs/gsl/errno.pxd +26 -0
- sage/libs/gsl/exp.pxd +44 -0
- sage/libs/gsl/expint.pxd +44 -0
- sage/libs/gsl/fermi_dirac.pxd +44 -0
- sage/libs/gsl/fft.pxd +121 -0
- sage/libs/gsl/fit.pxd +50 -0
- sage/libs/gsl/gamma.pxd +94 -0
- sage/libs/gsl/gegenbauer.pxd +26 -0
- sage/libs/gsl/histogram.pxd +176 -0
- sage/libs/gsl/hyperg.pxd +52 -0
- sage/libs/gsl/integration.pxd +69 -0
- sage/libs/gsl/interp.pxd +109 -0
- sage/libs/gsl/laguerre.pxd +24 -0
- sage/libs/gsl/lambert.pxd +16 -0
- sage/libs/gsl/legendre.pxd +90 -0
- sage/libs/gsl/linalg.pxd +185 -0
- sage/libs/gsl/log.pxd +26 -0
- sage/libs/gsl/math.pxd +43 -0
- sage/libs/gsl/matrix.pxd +143 -0
- sage/libs/gsl/matrix_complex.pxd +130 -0
- sage/libs/gsl/min.pxd +67 -0
- sage/libs/gsl/monte.pxd +56 -0
- sage/libs/gsl/ntuple.pxd +32 -0
- sage/libs/gsl/odeiv.pxd +70 -0
- sage/libs/gsl/permutation.pxd +78 -0
- sage/libs/gsl/poly.pxd +40 -0
- sage/libs/gsl/pow_int.pxd +12 -0
- sage/libs/gsl/psi.pxd +28 -0
- sage/libs/gsl/qrng.pxd +29 -0
- sage/libs/gsl/random.pxd +257 -0
- sage/libs/gsl/rng.pxd +100 -0
- sage/libs/gsl/roots.pxd +72 -0
- sage/libs/gsl/sort.pxd +36 -0
- sage/libs/gsl/statistics.pxd +59 -0
- sage/libs/gsl/sum.pxd +55 -0
- sage/libs/gsl/synchrotron.pxd +16 -0
- sage/libs/gsl/transport.pxd +24 -0
- sage/libs/gsl/trig.pxd +58 -0
- sage/libs/gsl/types.pxd +137 -0
- sage/libs/gsl/vector.pxd +101 -0
- sage/libs/gsl/vector_complex.pxd +83 -0
- sage/libs/gsl/wavelet.pxd +49 -0
- sage/libs/gsl/zeta.pxd +28 -0
- sage/libs/mpc/__init__.pxd +114 -0
- sage/libs/mpc/types.pxd +28 -0
- sage/libs/mpfr/__init__.pxd +299 -0
- sage/libs/mpfr/types.pxd +26 -0
- sage/libs/mpmath/__init__.py +1 -0
- sage/libs/mpmath/all.py +27 -0
- sage/libs/mpmath/all__sagemath_modules.py +1 -0
- sage/libs/mpmath/utils.cpython-314-aarch64-linux-musl.so +0 -0
- sage/libs/mpmath/utils.pxd +4 -0
- sage/libs/mpmath/utils.pyx +319 -0
- sage/matrix/action.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matrix/action.pxd +26 -0
- sage/matrix/action.pyx +596 -0
- sage/matrix/all.py +9 -0
- sage/matrix/args.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matrix/args.pxd +144 -0
- sage/matrix/args.pyx +1668 -0
- sage/matrix/benchmark.py +1258 -0
- sage/matrix/berlekamp_massey.py +95 -0
- sage/matrix/compute_J_ideal.py +926 -0
- sage/matrix/constructor.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matrix/constructor.pyx +750 -0
- sage/matrix/docs.py +430 -0
- sage/matrix/echelon_matrix.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matrix/echelon_matrix.pyx +155 -0
- sage/matrix/matrix.pxd +2 -0
- sage/matrix/matrix0.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matrix/matrix0.pxd +68 -0
- sage/matrix/matrix0.pyx +6324 -0
- sage/matrix/matrix1.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matrix/matrix1.pxd +8 -0
- sage/matrix/matrix1.pyx +2851 -0
- sage/matrix/matrix2.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matrix/matrix2.pxd +25 -0
- sage/matrix/matrix2.pyx +20181 -0
- sage/matrix/matrix_cdv.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matrix/matrix_cdv.pxd +4 -0
- sage/matrix/matrix_cdv.pyx +93 -0
- sage/matrix/matrix_complex_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matrix/matrix_complex_double_dense.pxd +5 -0
- sage/matrix/matrix_complex_double_dense.pyx +98 -0
- sage/matrix/matrix_dense.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matrix/matrix_dense.pxd +5 -0
- sage/matrix/matrix_dense.pyx +343 -0
- sage/matrix/matrix_domain_dense.pxd +5 -0
- sage/matrix/matrix_domain_sparse.pxd +5 -0
- sage/matrix/matrix_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matrix/matrix_double_dense.pxd +7 -0
- sage/matrix/matrix_double_dense.pyx +3906 -0
- sage/matrix/matrix_double_sparse.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matrix/matrix_double_sparse.pxd +6 -0
- sage/matrix/matrix_double_sparse.pyx +248 -0
- sage/matrix/matrix_generic_dense.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matrix/matrix_generic_dense.pxd +7 -0
- sage/matrix/matrix_generic_dense.pyx +354 -0
- sage/matrix/matrix_generic_sparse.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matrix/matrix_generic_sparse.pxd +7 -0
- sage/matrix/matrix_generic_sparse.pyx +461 -0
- sage/matrix/matrix_laurent_mpolynomial_dense.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matrix/matrix_laurent_mpolynomial_dense.pxd +5 -0
- sage/matrix/matrix_laurent_mpolynomial_dense.pyx +115 -0
- sage/matrix/matrix_misc.py +313 -0
- sage/matrix/matrix_numpy_dense.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matrix/matrix_numpy_dense.pxd +14 -0
- sage/matrix/matrix_numpy_dense.pyx +450 -0
- sage/matrix/matrix_numpy_integer_dense.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matrix/matrix_numpy_integer_dense.pxd +7 -0
- sage/matrix/matrix_numpy_integer_dense.pyx +59 -0
- sage/matrix/matrix_polynomial_dense.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matrix/matrix_polynomial_dense.pxd +5 -0
- sage/matrix/matrix_polynomial_dense.pyx +5341 -0
- sage/matrix/matrix_real_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matrix/matrix_real_double_dense.pxd +7 -0
- sage/matrix/matrix_real_double_dense.pyx +122 -0
- sage/matrix/matrix_space.py +2848 -0
- sage/matrix/matrix_sparse.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matrix/matrix_sparse.pxd +5 -0
- sage/matrix/matrix_sparse.pyx +1222 -0
- sage/matrix/matrix_window.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matrix/matrix_window.pxd +37 -0
- sage/matrix/matrix_window.pyx +242 -0
- sage/matrix/misc_mpfr.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matrix/misc_mpfr.pyx +80 -0
- sage/matrix/operation_table.py +1182 -0
- sage/matrix/special.py +3666 -0
- sage/matrix/strassen.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matrix/strassen.pyx +851 -0
- sage/matrix/symplectic_basis.py +541 -0
- sage/matrix/template.pxd +6 -0
- sage/matrix/tests.py +71 -0
- sage/matroids/advanced.py +77 -0
- sage/matroids/all.py +13 -0
- sage/matroids/basis_exchange_matroid.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matroids/basis_exchange_matroid.pxd +96 -0
- sage/matroids/basis_exchange_matroid.pyx +2344 -0
- sage/matroids/basis_matroid.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matroids/basis_matroid.pxd +45 -0
- sage/matroids/basis_matroid.pyx +1217 -0
- sage/matroids/catalog.py +44 -0
- sage/matroids/chow_ring.py +473 -0
- sage/matroids/chow_ring_ideal.py +849 -0
- sage/matroids/circuit_closures_matroid.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matroids/circuit_closures_matroid.pxd +16 -0
- sage/matroids/circuit_closures_matroid.pyx +559 -0
- sage/matroids/circuits_matroid.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matroids/circuits_matroid.pxd +38 -0
- sage/matroids/circuits_matroid.pyx +947 -0
- sage/matroids/constructor.py +1086 -0
- sage/matroids/database_collections.py +365 -0
- sage/matroids/database_matroids.py +5338 -0
- sage/matroids/dual_matroid.py +583 -0
- sage/matroids/extension.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matroids/extension.pxd +34 -0
- sage/matroids/extension.pyx +519 -0
- sage/matroids/flats_matroid.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matroids/flats_matroid.pxd +28 -0
- sage/matroids/flats_matroid.pyx +715 -0
- sage/matroids/gammoid.py +600 -0
- sage/matroids/graphic_matroid.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matroids/graphic_matroid.pxd +39 -0
- sage/matroids/graphic_matroid.pyx +2024 -0
- sage/matroids/lean_matrix.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matroids/lean_matrix.pxd +126 -0
- sage/matroids/lean_matrix.pyx +3667 -0
- sage/matroids/linear_matroid.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matroids/linear_matroid.pxd +180 -0
- sage/matroids/linear_matroid.pyx +6649 -0
- sage/matroids/matroid.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matroids/matroid.pxd +243 -0
- sage/matroids/matroid.pyx +8759 -0
- sage/matroids/matroids_catalog.py +190 -0
- sage/matroids/matroids_plot_helpers.py +890 -0
- sage/matroids/minor_matroid.py +480 -0
- sage/matroids/minorfix.h +9 -0
- sage/matroids/named_matroids.py +5 -0
- sage/matroids/rank_matroid.py +268 -0
- sage/matroids/set_system.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matroids/set_system.pxd +38 -0
- sage/matroids/set_system.pyx +800 -0
- sage/matroids/transversal_matroid.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matroids/transversal_matroid.pxd +14 -0
- sage/matroids/transversal_matroid.pyx +893 -0
- sage/matroids/union_matroid.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matroids/union_matroid.pxd +20 -0
- sage/matroids/union_matroid.pyx +331 -0
- sage/matroids/unpickling.cpython-314-aarch64-linux-musl.so +0 -0
- sage/matroids/unpickling.pyx +843 -0
- sage/matroids/utilities.py +809 -0
- sage/misc/all__sagemath_modules.py +20 -0
- sage/misc/c3.cpython-314-aarch64-linux-musl.so +0 -0
- sage/misc/c3.pyx +238 -0
- sage/misc/compat.py +87 -0
- sage/misc/element_with_label.py +173 -0
- sage/misc/func_persist.py +79 -0
- sage/misc/pickle_old.cpython-314-aarch64-linux-musl.so +0 -0
- sage/misc/pickle_old.pyx +19 -0
- sage/misc/proof.py +7 -0
- sage/misc/replace_dot_all.py +472 -0
- sage/misc/sagedoc_conf.py +168 -0
- sage/misc/sphinxify.py +167 -0
- sage/misc/test_class_pickling.py +85 -0
- sage/modules/all.py +42 -0
- sage/modules/complex_double_vector.py +25 -0
- sage/modules/diamond_cutting.py +380 -0
- sage/modules/fg_pid/all.py +1 -0
- sage/modules/fg_pid/fgp_element.py +456 -0
- sage/modules/fg_pid/fgp_module.py +2091 -0
- sage/modules/fg_pid/fgp_morphism.py +550 -0
- sage/modules/filtered_vector_space.py +1271 -0
- sage/modules/finite_submodule_iter.cpython-314-aarch64-linux-musl.so +0 -0
- sage/modules/finite_submodule_iter.pxd +27 -0
- sage/modules/finite_submodule_iter.pyx +452 -0
- sage/modules/fp_graded/all.py +1 -0
- sage/modules/fp_graded/element.py +346 -0
- sage/modules/fp_graded/free_element.py +298 -0
- sage/modules/fp_graded/free_homspace.py +53 -0
- sage/modules/fp_graded/free_module.py +1060 -0
- sage/modules/fp_graded/free_morphism.py +217 -0
- sage/modules/fp_graded/homspace.py +563 -0
- sage/modules/fp_graded/module.py +1340 -0
- sage/modules/fp_graded/morphism.py +1990 -0
- sage/modules/fp_graded/steenrod/all.py +1 -0
- sage/modules/fp_graded/steenrod/homspace.py +65 -0
- sage/modules/fp_graded/steenrod/module.py +477 -0
- sage/modules/fp_graded/steenrod/morphism.py +404 -0
- sage/modules/fp_graded/steenrod/profile.py +241 -0
- sage/modules/free_module.py +8447 -0
- sage/modules/free_module_element.cpython-314-aarch64-linux-musl.so +0 -0
- sage/modules/free_module_element.pxd +22 -0
- sage/modules/free_module_element.pyx +5445 -0
- sage/modules/free_module_homspace.py +369 -0
- sage/modules/free_module_integer.py +896 -0
- sage/modules/free_module_morphism.py +823 -0
- sage/modules/free_module_pseudohomspace.py +352 -0
- sage/modules/free_module_pseudomorphism.py +578 -0
- sage/modules/free_quadratic_module.py +1706 -0
- sage/modules/free_quadratic_module_integer_symmetric.py +1790 -0
- sage/modules/matrix_morphism.py +1745 -0
- sage/modules/misc.py +103 -0
- sage/modules/module_functors.py +192 -0
- sage/modules/multi_filtered_vector_space.py +719 -0
- sage/modules/ore_module.py +2208 -0
- sage/modules/ore_module_element.py +178 -0
- sage/modules/ore_module_homspace.py +147 -0
- sage/modules/ore_module_morphism.py +968 -0
- sage/modules/quotient_module.py +699 -0
- sage/modules/real_double_vector.py +22 -0
- sage/modules/submodule.py +255 -0
- sage/modules/tensor_operations.py +567 -0
- sage/modules/torsion_quadratic_module.py +1352 -0
- sage/modules/tutorial_free_modules.py +248 -0
- sage/modules/vector_complex_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
- sage/modules/vector_complex_double_dense.pxd +6 -0
- sage/modules/vector_complex_double_dense.pyx +117 -0
- sage/modules/vector_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
- sage/modules/vector_double_dense.pxd +6 -0
- sage/modules/vector_double_dense.pyx +604 -0
- sage/modules/vector_integer_dense.cpython-314-aarch64-linux-musl.so +0 -0
- sage/modules/vector_integer_dense.pxd +15 -0
- sage/modules/vector_integer_dense.pyx +361 -0
- sage/modules/vector_integer_sparse.cpython-314-aarch64-linux-musl.so +0 -0
- sage/modules/vector_integer_sparse.pxd +29 -0
- sage/modules/vector_integer_sparse.pyx +406 -0
- sage/modules/vector_modn_dense.cpython-314-aarch64-linux-musl.so +0 -0
- sage/modules/vector_modn_dense.pxd +12 -0
- sage/modules/vector_modn_dense.pyx +394 -0
- sage/modules/vector_modn_sparse.cpython-314-aarch64-linux-musl.so +0 -0
- sage/modules/vector_modn_sparse.pxd +21 -0
- sage/modules/vector_modn_sparse.pyx +298 -0
- sage/modules/vector_numpy_dense.cpython-314-aarch64-linux-musl.so +0 -0
- sage/modules/vector_numpy_dense.pxd +15 -0
- sage/modules/vector_numpy_dense.pyx +304 -0
- sage/modules/vector_numpy_integer_dense.cpython-314-aarch64-linux-musl.so +0 -0
- sage/modules/vector_numpy_integer_dense.pxd +7 -0
- sage/modules/vector_numpy_integer_dense.pyx +54 -0
- sage/modules/vector_rational_dense.cpython-314-aarch64-linux-musl.so +0 -0
- sage/modules/vector_rational_dense.pxd +15 -0
- sage/modules/vector_rational_dense.pyx +387 -0
- sage/modules/vector_rational_sparse.cpython-314-aarch64-linux-musl.so +0 -0
- sage/modules/vector_rational_sparse.pxd +30 -0
- sage/modules/vector_rational_sparse.pyx +413 -0
- sage/modules/vector_real_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
- sage/modules/vector_real_double_dense.pxd +6 -0
- sage/modules/vector_real_double_dense.pyx +126 -0
- sage/modules/vector_space_homspace.py +430 -0
- sage/modules/vector_space_morphism.py +989 -0
- sage/modules/with_basis/all.py +15 -0
- sage/modules/with_basis/cell_module.py +494 -0
- sage/modules/with_basis/indexed_element.cpython-314-aarch64-linux-musl.so +0 -0
- sage/modules/with_basis/indexed_element.pxd +13 -0
- sage/modules/with_basis/indexed_element.pyx +1058 -0
- sage/modules/with_basis/invariant.py +1075 -0
- sage/modules/with_basis/morphism.py +1636 -0
- sage/modules/with_basis/representation.py +2939 -0
- sage/modules/with_basis/subquotient.py +685 -0
- sage/numerical/all__sagemath_modules.py +6 -0
- sage/numerical/gauss_legendre.cpython-314-aarch64-linux-musl.so +0 -0
- sage/numerical/gauss_legendre.pyx +381 -0
- sage/numerical/optimize.py +910 -0
- sage/probability/all.py +10 -0
- sage/probability/probability_distribution.cpython-314-aarch64-linux-musl.so +0 -0
- sage/probability/probability_distribution.pyx +1242 -0
- sage/probability/random_variable.py +411 -0
- sage/quadratic_forms/all.py +4 -0
- sage/quadratic_forms/all__sagemath_modules.py +15 -0
- sage/quadratic_forms/binary_qf.py +2042 -0
- sage/quadratic_forms/bqf_class_group.py +748 -0
- sage/quadratic_forms/constructions.py +93 -0
- sage/quadratic_forms/count_local_2.cpython-314-aarch64-linux-musl.so +0 -0
- sage/quadratic_forms/count_local_2.pyx +365 -0
- sage/quadratic_forms/extras.py +195 -0
- sage/quadratic_forms/quadratic_form.py +1753 -0
- sage/quadratic_forms/quadratic_form__count_local_2.py +221 -0
- sage/quadratic_forms/quadratic_form__equivalence_testing.py +708 -0
- sage/quadratic_forms/quadratic_form__evaluate.cpython-314-aarch64-linux-musl.so +0 -0
- sage/quadratic_forms/quadratic_form__evaluate.pyx +139 -0
- sage/quadratic_forms/quadratic_form__local_density_congruence.py +977 -0
- sage/quadratic_forms/quadratic_form__local_field_invariants.py +1072 -0
- sage/quadratic_forms/quadratic_form__neighbors.py +424 -0
- sage/quadratic_forms/quadratic_form__reduction_theory.py +488 -0
- sage/quadratic_forms/quadratic_form__split_local_covering.py +416 -0
- sage/quadratic_forms/quadratic_form__ternary_Tornaria.py +657 -0
- sage/quadratic_forms/quadratic_form__theta.py +352 -0
- sage/quadratic_forms/quadratic_form__variable_substitutions.py +370 -0
- sage/quadratic_forms/random_quadraticform.py +209 -0
- sage/quadratic_forms/ternary.cpython-314-aarch64-linux-musl.so +0 -0
- sage/quadratic_forms/ternary.pyx +1154 -0
- sage/quadratic_forms/ternary_qf.py +2027 -0
- sage/rings/all__sagemath_modules.py +28 -0
- sage/rings/asymptotic/all__sagemath_modules.py +1 -0
- sage/rings/asymptotic/misc.py +1252 -0
- sage/rings/cc.py +4 -0
- sage/rings/cfinite_sequence.py +1306 -0
- sage/rings/complex_conversion.cpython-314-aarch64-linux-musl.so +0 -0
- sage/rings/complex_conversion.pxd +8 -0
- sage/rings/complex_conversion.pyx +23 -0
- sage/rings/complex_double.cpython-314-aarch64-linux-musl.so +0 -0
- sage/rings/complex_double.pxd +21 -0
- sage/rings/complex_double.pyx +2654 -0
- sage/rings/complex_mpc.cpython-314-aarch64-linux-musl.so +0 -0
- sage/rings/complex_mpc.pxd +21 -0
- sage/rings/complex_mpc.pyx +2576 -0
- sage/rings/complex_mpfr.cpython-314-aarch64-linux-musl.so +0 -0
- sage/rings/complex_mpfr.pxd +18 -0
- sage/rings/complex_mpfr.pyx +3602 -0
- sage/rings/derivation.py +2334 -0
- sage/rings/finite_rings/all__sagemath_modules.py +1 -0
- sage/rings/finite_rings/maps_finite_field.py +191 -0
- sage/rings/function_field/all__sagemath_modules.py +8 -0
- sage/rings/function_field/derivations.py +102 -0
- sage/rings/function_field/derivations_rational.py +132 -0
- sage/rings/function_field/differential.py +853 -0
- sage/rings/function_field/divisor.py +1107 -0
- sage/rings/function_field/drinfeld_modules/action.py +199 -0
- sage/rings/function_field/drinfeld_modules/all.py +1 -0
- sage/rings/function_field/drinfeld_modules/charzero_drinfeld_module.py +673 -0
- sage/rings/function_field/drinfeld_modules/drinfeld_module.py +2087 -0
- sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py +1131 -0
- sage/rings/function_field/drinfeld_modules/homset.py +420 -0
- sage/rings/function_field/drinfeld_modules/morphism.py +820 -0
- sage/rings/function_field/hermite_form_polynomial.cpython-314-aarch64-linux-musl.so +0 -0
- sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
- sage/rings/function_field/khuri_makdisi.cpython-314-aarch64-linux-musl.so +0 -0
- sage/rings/function_field/khuri_makdisi.pyx +935 -0
- sage/rings/invariants/all.py +4 -0
- sage/rings/invariants/invariant_theory.py +4597 -0
- sage/rings/invariants/reconstruction.py +395 -0
- sage/rings/polynomial/all__sagemath_modules.py +17 -0
- sage/rings/polynomial/integer_valued_polynomials.py +1230 -0
- sage/rings/polynomial/laurent_polynomial_mpair.cpython-314-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/laurent_polynomial_mpair.pxd +15 -0
- sage/rings/polynomial/laurent_polynomial_mpair.pyx +2023 -0
- sage/rings/polynomial/ore_function_element.py +952 -0
- sage/rings/polynomial/ore_function_field.py +1028 -0
- sage/rings/polynomial/ore_polynomial_element.cpython-314-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/ore_polynomial_element.pxd +48 -0
- sage/rings/polynomial/ore_polynomial_element.pyx +3145 -0
- sage/rings/polynomial/ore_polynomial_ring.py +1334 -0
- sage/rings/polynomial/polynomial_real_mpfr_dense.cpython-314-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/polynomial_real_mpfr_dense.pyx +788 -0
- sage/rings/polynomial/q_integer_valued_polynomials.py +1264 -0
- sage/rings/polynomial/skew_polynomial_element.cpython-314-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/skew_polynomial_element.pxd +9 -0
- sage/rings/polynomial/skew_polynomial_element.pyx +684 -0
- sage/rings/polynomial/skew_polynomial_finite_field.cpython-314-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/skew_polynomial_finite_field.pxd +19 -0
- sage/rings/polynomial/skew_polynomial_finite_field.pyx +1093 -0
- sage/rings/polynomial/skew_polynomial_finite_order.cpython-314-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/skew_polynomial_finite_order.pxd +10 -0
- sage/rings/polynomial/skew_polynomial_finite_order.pyx +567 -0
- sage/rings/polynomial/skew_polynomial_ring.py +908 -0
- sage/rings/real_double_element_gsl.cpython-314-aarch64-linux-musl.so +0 -0
- sage/rings/real_double_element_gsl.pxd +8 -0
- sage/rings/real_double_element_gsl.pyx +794 -0
- sage/rings/real_field.py +58 -0
- sage/rings/real_mpfr.cpython-314-aarch64-linux-musl.so +0 -0
- sage/rings/real_mpfr.pxd +29 -0
- sage/rings/real_mpfr.pyx +6122 -0
- sage/rings/ring_extension.cpython-314-aarch64-linux-musl.so +0 -0
- sage/rings/ring_extension.pxd +42 -0
- sage/rings/ring_extension.pyx +2779 -0
- sage/rings/ring_extension_conversion.cpython-314-aarch64-linux-musl.so +0 -0
- sage/rings/ring_extension_conversion.pxd +16 -0
- sage/rings/ring_extension_conversion.pyx +462 -0
- sage/rings/ring_extension_element.cpython-314-aarch64-linux-musl.so +0 -0
- sage/rings/ring_extension_element.pxd +21 -0
- sage/rings/ring_extension_element.pyx +1635 -0
- sage/rings/ring_extension_homset.py +64 -0
- sage/rings/ring_extension_morphism.cpython-314-aarch64-linux-musl.so +0 -0
- sage/rings/ring_extension_morphism.pxd +35 -0
- sage/rings/ring_extension_morphism.pyx +920 -0
- sage/schemes/all__sagemath_modules.py +1 -0
- sage/schemes/projective/all__sagemath_modules.py +1 -0
- sage/schemes/projective/coherent_sheaf.py +300 -0
- sage/schemes/projective/cohomology.py +510 -0
- sage/stats/all.py +15 -0
- sage/stats/basic_stats.py +489 -0
- sage/stats/distributions/all.py +7 -0
- sage/stats/distributions/catalog.py +34 -0
- sage/stats/distributions/dgs.h +50 -0
- sage/stats/distributions/dgs.pxd +111 -0
- sage/stats/distributions/dgs_bern.h +400 -0
- sage/stats/distributions/dgs_gauss.h +614 -0
- sage/stats/distributions/dgs_misc.h +104 -0
- sage/stats/distributions/discrete_gaussian_integer.cpython-314-aarch64-linux-musl.so +0 -0
- sage/stats/distributions/discrete_gaussian_integer.pxd +14 -0
- sage/stats/distributions/discrete_gaussian_integer.pyx +498 -0
- sage/stats/distributions/discrete_gaussian_lattice.py +908 -0
- sage/stats/distributions/discrete_gaussian_polynomial.py +141 -0
- sage/stats/hmm/all.py +15 -0
- sage/stats/hmm/chmm.cpython-314-aarch64-linux-musl.so +0 -0
- sage/stats/hmm/chmm.pyx +1595 -0
- sage/stats/hmm/distributions.cpython-314-aarch64-linux-musl.so +0 -0
- sage/stats/hmm/distributions.pxd +29 -0
- sage/stats/hmm/distributions.pyx +531 -0
- sage/stats/hmm/hmm.cpython-314-aarch64-linux-musl.so +0 -0
- sage/stats/hmm/hmm.pxd +17 -0
- sage/stats/hmm/hmm.pyx +1388 -0
- sage/stats/hmm/util.cpython-314-aarch64-linux-musl.so +0 -0
- sage/stats/hmm/util.pxd +7 -0
- sage/stats/hmm/util.pyx +165 -0
- sage/stats/intlist.cpython-314-aarch64-linux-musl.so +0 -0
- sage/stats/intlist.pxd +14 -0
- sage/stats/intlist.pyx +588 -0
- sage/stats/r.py +49 -0
- sage/stats/time_series.cpython-314-aarch64-linux-musl.so +0 -0
- sage/stats/time_series.pxd +6 -0
- sage/stats/time_series.pyx +2546 -0
- sage/tensor/all.py +2 -0
- sage/tensor/modules/all.py +8 -0
- sage/tensor/modules/alternating_contr_tensor.py +761 -0
- sage/tensor/modules/comp.py +5598 -0
- sage/tensor/modules/ext_pow_free_module.py +824 -0
- sage/tensor/modules/finite_rank_free_module.py +3589 -0
- sage/tensor/modules/format_utilities.py +333 -0
- sage/tensor/modules/free_module_alt_form.py +858 -0
- sage/tensor/modules/free_module_automorphism.py +1207 -0
- sage/tensor/modules/free_module_basis.py +1074 -0
- sage/tensor/modules/free_module_element.py +284 -0
- sage/tensor/modules/free_module_homset.py +652 -0
- sage/tensor/modules/free_module_linear_group.py +564 -0
- sage/tensor/modules/free_module_morphism.py +1581 -0
- sage/tensor/modules/free_module_tensor.py +3289 -0
- sage/tensor/modules/reflexive_module.py +386 -0
- sage/tensor/modules/tensor_free_module.py +780 -0
- sage/tensor/modules/tensor_free_submodule.py +538 -0
- sage/tensor/modules/tensor_free_submodule_basis.py +140 -0
- sage/tensor/modules/tensor_with_indices.py +1043 -0
sage/matroids/gammoid.py
ADDED
|
@@ -0,0 +1,600 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
# sage.doctest: needs sage.graphs sage.numerical.mip
|
|
3
|
+
r"""
|
|
4
|
+
Gammoids
|
|
5
|
+
|
|
6
|
+
Let `D` be a directed graph and let `E` and `T` be not necessarily disjoint
|
|
7
|
+
sets of vertices of `D`. Say a subset `X` of `E` is in a collection `I` if
|
|
8
|
+
`X` can be linked into a subset of `T`. This defines a gammoid `(E, I)`,
|
|
9
|
+
where `E` is the groundset of a matroid and `I` is its independent sets.
|
|
10
|
+
|
|
11
|
+
Some authors use a reverse convention, where instead of a set `T` of roots,
|
|
12
|
+
they have a starting set `S` that is linked into subsets of `E`. Here we use
|
|
13
|
+
the convention that the vertices `T` are at the end of the directed paths,
|
|
14
|
+
not the beginning.
|
|
15
|
+
|
|
16
|
+
To construct a gammoid, first import Gammoid from
|
|
17
|
+
:mod:`sage.matroids.gammoid`.
|
|
18
|
+
A digraph and a list of roots from the vertex set are required for input::
|
|
19
|
+
|
|
20
|
+
sage: from sage.matroids.gammoid import *
|
|
21
|
+
sage: edgelist = [(0,1),(1,2),(2,3),(3,4)]
|
|
22
|
+
sage: D = DiGraph(edgelist)
|
|
23
|
+
sage: M = Gammoid(D, roots=[4]); M
|
|
24
|
+
Gammoid of rank 1 on 5 elements
|
|
25
|
+
sage: N = Gammoid(D, roots=[4], groundset=range(1,5)); N
|
|
26
|
+
Gammoid of rank 1 on 4 elements
|
|
27
|
+
sage: M.delete(0) == N
|
|
28
|
+
True
|
|
29
|
+
sage: N.is_isomorphic(matroids.Uniform(1,4))
|
|
30
|
+
True
|
|
31
|
+
sage: O = Gammoid(D, roots=[3]); O
|
|
32
|
+
Gammoid of rank 1 on 5 elements
|
|
33
|
+
sage: O.rank([0])
|
|
34
|
+
1
|
|
35
|
+
sage: O.rank([4])
|
|
36
|
+
0
|
|
37
|
+
|
|
38
|
+
AUTHORS:
|
|
39
|
+
|
|
40
|
+
- Zachary Gershkoff (2017-08-25): initial version
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
# *****************************************************************************
|
|
44
|
+
# Copyright (C) 2017 Zachary Gershkoff <zgersh2@lsu.edu>
|
|
45
|
+
#
|
|
46
|
+
#
|
|
47
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
48
|
+
# as published by the Free Software Foundation; either version 2 of
|
|
49
|
+
# the License, or (at your option) any later version.
|
|
50
|
+
# https://www.gnu.org/licenses/
|
|
51
|
+
# *****************************************************************************
|
|
52
|
+
|
|
53
|
+
from sage.graphs.digraph import DiGraph
|
|
54
|
+
from sage.matroids.matroid import Matroid
|
|
55
|
+
from sage.matroids.minor_matroid import MinorMatroid
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
class Gammoid(Matroid):
|
|
59
|
+
r"""
|
|
60
|
+
The gammoid class.
|
|
61
|
+
|
|
62
|
+
INPUT:
|
|
63
|
+
|
|
64
|
+
- ``D`` -- a loopless digraph representing the gammoid
|
|
65
|
+
- ``roots`` -- a subset of the vertices
|
|
66
|
+
- ``groundset`` -- (optional) a subset of the vertices
|
|
67
|
+
|
|
68
|
+
OUTPUT: :class:`Gammoid`; if ``groundset`` is not specified,
|
|
69
|
+
the entire vertex set is used (and the gammoid will be strict)
|
|
70
|
+
|
|
71
|
+
EXAMPLES::
|
|
72
|
+
|
|
73
|
+
sage: from sage.matroids.gammoid import Gammoid
|
|
74
|
+
sage: D = digraphs.TransitiveTournament(5)
|
|
75
|
+
sage: M = Gammoid(D, roots=[3, 4]); M
|
|
76
|
+
Gammoid of rank 2 on 5 elements
|
|
77
|
+
sage: M.is_isomorphic(matroids.Uniform(2, 5))
|
|
78
|
+
True
|
|
79
|
+
sage: D.add_vertex(6)
|
|
80
|
+
sage: N = Gammoid(D, roots=[3, 4])
|
|
81
|
+
sage: N.loops()
|
|
82
|
+
frozenset({6})
|
|
83
|
+
sage: O = Gammoid(D, roots=[3, 4, 6])
|
|
84
|
+
sage: O.coloops()
|
|
85
|
+
frozenset({6})
|
|
86
|
+
sage: O.full_rank()
|
|
87
|
+
3
|
|
88
|
+
sage: P = Gammoid(D, roots=[3, 4], groundset=[0, 2, 3]); P
|
|
89
|
+
Gammoid of rank 2 on 3 elements
|
|
90
|
+
"""
|
|
91
|
+
|
|
92
|
+
def __init__(self, D, roots, groundset=None):
|
|
93
|
+
"""
|
|
94
|
+
See the class definition for full documentation.
|
|
95
|
+
|
|
96
|
+
EXAMPLES::
|
|
97
|
+
|
|
98
|
+
sage: from sage.matroids.gammoid import Gammoid
|
|
99
|
+
sage: edgedict = {1: [2], 2: [3], 4: [1, 5], 5: [2, 3, 8],
|
|
100
|
+
....: 6: [4, 7], 7: [5, 8]}
|
|
101
|
+
sage: D = DiGraph(edgedict)
|
|
102
|
+
sage: M = Gammoid(D, roots=[1, 2, 3])
|
|
103
|
+
sage: N1 = Gammoid(D, groundset=range(1, 8), roots=[1, 2, 3])
|
|
104
|
+
sage: N2 = M.delete(8)
|
|
105
|
+
sage: N1 == N2
|
|
106
|
+
True
|
|
107
|
+
|
|
108
|
+
TESTS::
|
|
109
|
+
|
|
110
|
+
sage: from sage.matroids.gammoid import Gammoid
|
|
111
|
+
sage: D = DiGraph([(0, 0), (0, 1), (1, 1)], loops=True)
|
|
112
|
+
sage: M = Gammoid(D, roots=[1])
|
|
113
|
+
Traceback (most recent call last):
|
|
114
|
+
...
|
|
115
|
+
ValueError: cannot add edge from 0 to 0 in graph without loops
|
|
116
|
+
sage: D = DiGraph([(0, 1), (0, 1)], multiedges=True)
|
|
117
|
+
sage: M = Gammoid(D, roots=[1])
|
|
118
|
+
sage: M.is_isomorphic(matroids.Uniform(1, 2))
|
|
119
|
+
True
|
|
120
|
+
sage: M = Gammoid(D, roots=[3])
|
|
121
|
+
Traceback (most recent call last):
|
|
122
|
+
...
|
|
123
|
+
ValueError: roots must be a subset of the vertices
|
|
124
|
+
sage: M = Gammoid(D, roots=[1], groundset=[3])
|
|
125
|
+
Traceback (most recent call last):
|
|
126
|
+
...
|
|
127
|
+
ValueError: groundset must be a subset of the vertices
|
|
128
|
+
|
|
129
|
+
::
|
|
130
|
+
|
|
131
|
+
sage: from sage.matroids.gammoid import Gammoid
|
|
132
|
+
sage: edgedict = {1: [2], 2: [3], 4: [1, 5], 5: [2, 3, 8],
|
|
133
|
+
....: 6: [4, 7], 7: [5, 8]}
|
|
134
|
+
sage: D = DiGraph(edgedict)
|
|
135
|
+
sage: M = Gammoid(D, roots=[]); M
|
|
136
|
+
Gammoid of rank 0 on 8 elements
|
|
137
|
+
sage: M = Gammoid(D, roots=[], groundset=[]); M
|
|
138
|
+
Gammoid of rank 0 on 0 elements
|
|
139
|
+
|
|
140
|
+
::
|
|
141
|
+
|
|
142
|
+
sage: from sage.matroids.gammoid import Gammoid
|
|
143
|
+
sage: M = Gammoid(digraphs.TransitiveTournament(5), roots=[3, 4])
|
|
144
|
+
sage: TestSuite(M).run()
|
|
145
|
+
sage: TestSuite(M).run(verbose=True)
|
|
146
|
+
running ._test_category() . . . pass
|
|
147
|
+
running ._test_new() . . . pass
|
|
148
|
+
running ._test_not_implemented_methods() . . . pass
|
|
149
|
+
running ._test_pickling() . . . pass
|
|
150
|
+
"""
|
|
151
|
+
self._roots = frozenset(roots)
|
|
152
|
+
vertices = frozenset(D.vertices())
|
|
153
|
+
if not self._roots.issubset(vertices):
|
|
154
|
+
raise ValueError("roots must be a subset of the vertices")
|
|
155
|
+
|
|
156
|
+
if groundset is None:
|
|
157
|
+
self._groundset = vertices
|
|
158
|
+
else:
|
|
159
|
+
self._groundset = frozenset(groundset)
|
|
160
|
+
if not self._groundset.issubset(vertices):
|
|
161
|
+
raise ValueError("groundset must be a subset of the vertices")
|
|
162
|
+
|
|
163
|
+
# self._D is used for computations
|
|
164
|
+
# self._G is used for referencing and hashing
|
|
165
|
+
# loops will cause an error here, but multiedges will be ignored
|
|
166
|
+
self._D = DiGraph([D.vertices(), D.edges(labels=False)])
|
|
167
|
+
self._prune_vertices()
|
|
168
|
+
self._G = self._D.copy(immutable=True)
|
|
169
|
+
self._rootv = self._D.add_vertex()
|
|
170
|
+
for v in roots:
|
|
171
|
+
self._D.add_edge(v, self._rootv)
|
|
172
|
+
|
|
173
|
+
def _prune_vertices(self):
|
|
174
|
+
"""
|
|
175
|
+
Remove irrelevant vertices from the internal digraph.
|
|
176
|
+
|
|
177
|
+
This will remove vertices that are not part of the groundset and
|
|
178
|
+
cannot be used in a valid path between an element and a root.
|
|
179
|
+
However, this will not remove a cycle of such vertices.
|
|
180
|
+
|
|
181
|
+
EXAMPLES::
|
|
182
|
+
|
|
183
|
+
sage: from sage.matroids.gammoid import Gammoid
|
|
184
|
+
sage: D = digraphs.TransitiveTournament(5)
|
|
185
|
+
sage: D.add_vertex(6)
|
|
186
|
+
sage: M = Gammoid(D, roots=[3, 4], groundset=[0, 1, 4])
|
|
187
|
+
sage: M.digraph().vertices()
|
|
188
|
+
[0, 1, 2, 3, 4]
|
|
189
|
+
"""
|
|
190
|
+
vertices_c = self._roots.union(self._groundset)
|
|
191
|
+
extra_sources = set(self._D.sources()).difference(vertices_c)
|
|
192
|
+
extra_sinks = set(self._D.sinks()).difference(vertices_c)
|
|
193
|
+
while extra_sources or extra_sinks:
|
|
194
|
+
self._D.delete_vertices(set(extra_sources).union(extra_sinks))
|
|
195
|
+
extra_sources = set(self._D.sources()).difference(vertices_c)
|
|
196
|
+
extra_sinks = set(self._D.sinks()).difference(vertices_c)
|
|
197
|
+
|
|
198
|
+
def __hash__(self):
|
|
199
|
+
r"""
|
|
200
|
+
Return an invariant of the matroid.
|
|
201
|
+
|
|
202
|
+
This function is called when matroids are added to a set. It is very
|
|
203
|
+
desirable to override it so it can distinguish matroids on the same
|
|
204
|
+
groundset, which is a very typical use case!
|
|
205
|
+
|
|
206
|
+
.. WARNING::
|
|
207
|
+
|
|
208
|
+
This method is linked to ``__richcmp__`` (in Cython) and ``__cmp__``
|
|
209
|
+
or ``__eq__``/``__ne__`` (in Python). If you override one, you
|
|
210
|
+
should (and, in Cython, \emph{must}) override the other!
|
|
211
|
+
|
|
212
|
+
EXAMPLES::
|
|
213
|
+
|
|
214
|
+
sage: from sage.matroids.gammoid import Gammoid
|
|
215
|
+
sage: D = digraphs.TransitiveTournament(5)
|
|
216
|
+
sage: M1 = Gammoid(D, roots=[3, 4])
|
|
217
|
+
sage: M2 = Gammoid(D, roots=[2, 3])
|
|
218
|
+
sage: hash(M1) == hash(M2)
|
|
219
|
+
False
|
|
220
|
+
sage: N1 = M1.delete(2)
|
|
221
|
+
sage: N2 = Gammoid(D, roots=[3, 4], groundset=[0, 1, 3, 4])
|
|
222
|
+
sage: hash(N1) == hash(N2)
|
|
223
|
+
True
|
|
224
|
+
sage: D.delete_edge(0, 4)
|
|
225
|
+
sage: M3 = Gammoid(D, roots=[3, 4])
|
|
226
|
+
sage: hash(M1) == hash(M3)
|
|
227
|
+
False
|
|
228
|
+
"""
|
|
229
|
+
return hash((self._G, self._groundset, self._roots))
|
|
230
|
+
|
|
231
|
+
def __eq__(self, other):
|
|
232
|
+
"""
|
|
233
|
+
Compare two matroids.
|
|
234
|
+
|
|
235
|
+
For two graphic matroids to be equal, all attributes of the underlying
|
|
236
|
+
graphs must be equal.
|
|
237
|
+
|
|
238
|
+
INPUT:
|
|
239
|
+
|
|
240
|
+
- ``other`` -- matroid
|
|
241
|
+
|
|
242
|
+
OUTPUT: ``True`` if ``self`` and ``other`` have the same digraph,
|
|
243
|
+
roots, and groundset; ``False`` otherwise
|
|
244
|
+
|
|
245
|
+
EXAMPLES::
|
|
246
|
+
|
|
247
|
+
sage: from sage.matroids.gammoid import Gammoid
|
|
248
|
+
sage: D = digraphs.TransitiveTournament(5)
|
|
249
|
+
sage: M1 = Gammoid(D, roots=[3, 4])
|
|
250
|
+
sage: M2 = Gammoid(D, roots=[2, 3])
|
|
251
|
+
sage: M1 == M2
|
|
252
|
+
False
|
|
253
|
+
sage: N1 = M1.delete(2)
|
|
254
|
+
sage: N2 = Gammoid(D, roots=[3, 4], groundset=[0, 1, 3, 4])
|
|
255
|
+
sage: N1 == N2
|
|
256
|
+
True
|
|
257
|
+
"""
|
|
258
|
+
if not isinstance(other, Gammoid):
|
|
259
|
+
return False
|
|
260
|
+
# The roots are implied by self._D
|
|
261
|
+
return (self._D == other._D and self._groundset == other._groundset)
|
|
262
|
+
|
|
263
|
+
def __ne__(self, other):
|
|
264
|
+
"""
|
|
265
|
+
Compare two matroids.
|
|
266
|
+
|
|
267
|
+
INPUT:
|
|
268
|
+
|
|
269
|
+
- ``other`` -- matroid
|
|
270
|
+
|
|
271
|
+
OUTPUT: ``False`` if ``self`` and ``other`` have the same digraphs,
|
|
272
|
+
roots, and groundset; ``True`` otherwise
|
|
273
|
+
|
|
274
|
+
EXAMPLES::
|
|
275
|
+
|
|
276
|
+
sage: from sage.matroids.gammoid import Gammoid
|
|
277
|
+
sage: edgedict = {1: [2], 2: [3], 4: [1, 5], 5: [2, 3, 8], 6: [4, 7],
|
|
278
|
+
....: 7: [5, 8]}
|
|
279
|
+
sage: D = DiGraph(edgedict)
|
|
280
|
+
sage: M = Gammoid(D, roots=[1, 2, 3])
|
|
281
|
+
sage: D.relabel([1, 2, 3, 4, 5, 6, 7, 'a'])
|
|
282
|
+
sage: N = Gammoid(D, roots=[1, 2, 3])
|
|
283
|
+
sage: M == N
|
|
284
|
+
False
|
|
285
|
+
sage: M.delete(8) == N.delete('a')
|
|
286
|
+
True
|
|
287
|
+
"""
|
|
288
|
+
return (not self == other)
|
|
289
|
+
|
|
290
|
+
def __reduce__(self):
|
|
291
|
+
"""
|
|
292
|
+
Save the matroid for later reloading.
|
|
293
|
+
|
|
294
|
+
OUTPUT:
|
|
295
|
+
|
|
296
|
+
A tuple ``(unpickle, (version, data))``, where ``unpickle`` is the
|
|
297
|
+
name of a function that, when called with ``(version, data)``,
|
|
298
|
+
produces a matroid isomorphic to ``self``. ``version`` is an integer
|
|
299
|
+
(currently 0) and ``data`` is a tuple ``(E, F, name)`` where ``E`` is
|
|
300
|
+
the groundset, ``F`` is the dictionary of flats, and ``name`` is a
|
|
301
|
+
custom name.
|
|
302
|
+
|
|
303
|
+
EXAMPLES::
|
|
304
|
+
|
|
305
|
+
sage: from sage.matroids.gammoid import Gammoid
|
|
306
|
+
sage: edgelist = [(0, 4), (0, 5), (1, 0), (1, 4), (2, 0), (2, 1), (2, 3),
|
|
307
|
+
....: (2, 6), (3, 4), (3, 5), (4, 0), (5, 2), (6, 5)]
|
|
308
|
+
sage: D = DiGraph(edgelist)
|
|
309
|
+
sage: M = Gammoid(D, roots=[4, 5, 6])
|
|
310
|
+
sage: M.rename("Example Gammoid: " + repr(M))
|
|
311
|
+
sage: M == loads(dumps(M)), loads(dumps(M)) # indirect doctest
|
|
312
|
+
(True, Example Gammoid: Gammoid of rank 3 on 7 elements)
|
|
313
|
+
sage: M.reset_name()
|
|
314
|
+
sage: loads(dumps(M))
|
|
315
|
+
Gammoid of rank 3 on 7 elements
|
|
316
|
+
"""
|
|
317
|
+
import sage.matroids.unpickling
|
|
318
|
+
data = (self._D, self._roots, self._groundset, self.get_custom_name())
|
|
319
|
+
version = 0
|
|
320
|
+
return sage.matroids.unpickling.unpickle_gammoid, (version, data)
|
|
321
|
+
|
|
322
|
+
def digraph(self):
|
|
323
|
+
"""
|
|
324
|
+
Return the digraph associated with the gammoid.
|
|
325
|
+
|
|
326
|
+
EXAMPLES::
|
|
327
|
+
|
|
328
|
+
sage: from sage.matroids.gammoid import Gammoid
|
|
329
|
+
sage: edgelist = [(0, 4), (0, 5), (1, 0), (1, 4), (2, 0), (2, 1), (2, 3),
|
|
330
|
+
....: (2, 6), (3, 4), (3, 5), (4, 0), (5, 2), (6, 5)]
|
|
331
|
+
sage: D = DiGraph(edgelist)
|
|
332
|
+
sage: M = Gammoid(D, roots=[4, 5, 6])
|
|
333
|
+
sage: M.digraph() == D
|
|
334
|
+
True
|
|
335
|
+
"""
|
|
336
|
+
return self._G.copy(data_structure='sparse')
|
|
337
|
+
|
|
338
|
+
def digraph_plot(self):
|
|
339
|
+
"""
|
|
340
|
+
Plot the graph with color-coded vertices.
|
|
341
|
+
|
|
342
|
+
Vertices that are elements but not roots will be shown as blue. Vertices that
|
|
343
|
+
are roots but not elements are red. Vertices that are both are pink, and vertices
|
|
344
|
+
that are neither are grey.
|
|
345
|
+
|
|
346
|
+
EXAMPLES::
|
|
347
|
+
|
|
348
|
+
sage: from sage.matroids.gammoid import Gammoid
|
|
349
|
+
sage: D = digraphs.TransitiveTournament(4)
|
|
350
|
+
sage: M = Gammoid(D, roots=[2, 3])
|
|
351
|
+
sage: M.digraph_plot()
|
|
352
|
+
Graphics object consisting of 11 graphics primitives
|
|
353
|
+
"""
|
|
354
|
+
self._inter = frozenset(self._roots.intersection(self._groundset))
|
|
355
|
+
self._buckets = frozenset(self._roots.difference(self._inter))
|
|
356
|
+
self._ending = frozenset(self._groundset.difference(self._inter))
|
|
357
|
+
self._therest = set(self._G.vertices()).difference(self._roots)
|
|
358
|
+
self._therest = frozenset(self._therest.difference(self._groundset))
|
|
359
|
+
# Vertices just in buckets set are red "#D55E00"
|
|
360
|
+
# Vertices just in the ending set are blue "#0072B2"
|
|
361
|
+
# Vertices in both are pink "#CC79A7"
|
|
362
|
+
# Vertices in neither are grey "#999999"
|
|
363
|
+
d = {"#D55E00": list(self._buckets), "#CC79A7": list(self._inter),
|
|
364
|
+
"#0072B2": list(self._ending), "#999999": list(self._therest)}
|
|
365
|
+
return self._G.plot(vertex_colors=d)
|
|
366
|
+
|
|
367
|
+
def _rank(self, X):
|
|
368
|
+
"""
|
|
369
|
+
Return the rank of a set.
|
|
370
|
+
|
|
371
|
+
EXAMPLES::
|
|
372
|
+
|
|
373
|
+
sage: from sage.matroids.gammoid import Gammoid
|
|
374
|
+
sage: D = digraphs.TransitiveTournament(4)
|
|
375
|
+
sage: M = Gammoid(D, roots=[2, 3])
|
|
376
|
+
sage: M.rank([2])
|
|
377
|
+
1
|
|
378
|
+
sage: M.full_rank()
|
|
379
|
+
2
|
|
380
|
+
sage: M.rank(M.groundset())
|
|
381
|
+
2
|
|
382
|
+
"""
|
|
383
|
+
source = self._D.add_vertex()
|
|
384
|
+
for x in X:
|
|
385
|
+
self._D.add_edge(source, x)
|
|
386
|
+
|
|
387
|
+
rank = len(self._D.vertex_disjoint_paths(source, self._rootv))
|
|
388
|
+
self._D.delete_vertex(source)
|
|
389
|
+
return rank
|
|
390
|
+
|
|
391
|
+
def groundset(self):
|
|
392
|
+
"""
|
|
393
|
+
Return the groundset of the matroid.
|
|
394
|
+
|
|
395
|
+
EXAMPLES::
|
|
396
|
+
|
|
397
|
+
sage: from sage.matroids.gammoid import Gammoid
|
|
398
|
+
sage: edgelist = [(0, 4), (0, 5), (1, 0), (1, 4), (2, 0), (2, 1), (2, 3),
|
|
399
|
+
....: (2, 6), (3, 4), (3, 5), (4, 0), (5, 2), (6, 5)]
|
|
400
|
+
sage: D = DiGraph(edgelist)
|
|
401
|
+
sage: M = Gammoid(D, roots=[4, 5, 6])
|
|
402
|
+
sage: sorted(M.groundset())
|
|
403
|
+
[0, 1, 2, 3, 4, 5, 6]
|
|
404
|
+
"""
|
|
405
|
+
return self._groundset
|
|
406
|
+
|
|
407
|
+
def _repr_(self):
|
|
408
|
+
"""
|
|
409
|
+
Return a string representation of the matroid.
|
|
410
|
+
|
|
411
|
+
EXAMPLES:
|
|
412
|
+
|
|
413
|
+
sage: from sage.matroids.gammoid import Gammoid
|
|
414
|
+
sage: edgelist = [(0, 4), (0, 5), (1, 0), (1, 4), (2, 0), (2, 1), (2, 3),
|
|
415
|
+
....: (2, 6), (3, 4), (3, 5), (4, 0), (5, 2), (6, 5)]
|
|
416
|
+
sage: D = DiGraph(edgelist)
|
|
417
|
+
sage: M = Gammoid(D, roots=[4, 5, 6]); M
|
|
418
|
+
Gammoid of rank 3 on 7 elements
|
|
419
|
+
"""
|
|
420
|
+
self._mrank = str(self._rank(self._groundset))
|
|
421
|
+
self._elts = str(len(self._groundset))
|
|
422
|
+
return "Gammoid of rank " + self._mrank + " on " + self._elts + " elements"
|
|
423
|
+
|
|
424
|
+
def _minor(self, contractions=frozenset(), deletions=frozenset()):
|
|
425
|
+
"""
|
|
426
|
+
Return a minor.
|
|
427
|
+
|
|
428
|
+
INPUT:
|
|
429
|
+
|
|
430
|
+
- ``contractions`` -- frozenset; subset of ``self.groundset()`` to be contracted
|
|
431
|
+
- ``deletions`` -- frozenset; subset of ``self.groundset()`` to be deleted
|
|
432
|
+
|
|
433
|
+
Assumptions: contractions are independent, deletions are coindependent,
|
|
434
|
+
contractions and deletions are disjoint.
|
|
435
|
+
|
|
436
|
+
OUTPUT:
|
|
437
|
+
|
|
438
|
+
If there are contractions, a :class:`MinorMatroid`. If not, a :class:`Gammoid`.
|
|
439
|
+
|
|
440
|
+
EXAMPLES::
|
|
441
|
+
|
|
442
|
+
sage: from sage.matroids.gammoid import Gammoid
|
|
443
|
+
sage: edgedict = {1: [2], 2: [3], 4: [1,5], 5: [2, 3, 8],
|
|
444
|
+
....: 6: [4, 7], 7: [5, 8]}
|
|
445
|
+
sage: D = DiGraph(edgedict)
|
|
446
|
+
sage: M = Gammoid(D, roots=[1, 2, 3]); M
|
|
447
|
+
Gammoid of rank 3 on 8 elements
|
|
448
|
+
sage: N1 = M.delete([3, 4])
|
|
449
|
+
sage: N1.groundset()
|
|
450
|
+
frozenset({1, 2, 5, 6, 7, 8})
|
|
451
|
+
"""
|
|
452
|
+
# Unlike TransversalMatroid, we don't check for coloops to delete
|
|
453
|
+
# because that would mean altering the roots
|
|
454
|
+
if deletions:
|
|
455
|
+
new_groundset = self.groundset().difference(deletions)
|
|
456
|
+
N = Gammoid(self.digraph(), self._roots, new_groundset)
|
|
457
|
+
else:
|
|
458
|
+
N = self
|
|
459
|
+
|
|
460
|
+
if contractions:
|
|
461
|
+
return MinorMatroid(N, contractions=contractions, deletions=frozenset())
|
|
462
|
+
else:
|
|
463
|
+
return N
|
|
464
|
+
|
|
465
|
+
def gammoid_extension(self, vertex, neighbors=[]):
|
|
466
|
+
"""
|
|
467
|
+
Return a gammoid extended by an element.
|
|
468
|
+
|
|
469
|
+
The new element can be a vertex of the digraph that is not in the starting set,
|
|
470
|
+
or it can be a new source vertex.
|
|
471
|
+
|
|
472
|
+
INPUT:
|
|
473
|
+
|
|
474
|
+
- ``vertex`` -- a vertex of the gammoid's digraph that is not already in the
|
|
475
|
+
groundset, or a new vertex
|
|
476
|
+
- ``neighbors`` -- (optional) a set of vertices of the digraph
|
|
477
|
+
|
|
478
|
+
OUTPUT:
|
|
479
|
+
|
|
480
|
+
A :class:`Gammoid`. If ``vertex`` is not already in the graph, then the
|
|
481
|
+
new vertex will be have edges to ``neighbors``. The new vertex will have
|
|
482
|
+
in degree `0` regardless of whether or not ``neighbors`` is specified.
|
|
483
|
+
|
|
484
|
+
EXAMPLES::
|
|
485
|
+
|
|
486
|
+
sage: from sage.matroids.gammoid import Gammoid
|
|
487
|
+
sage: edgedict = {1: [2], 2: [3], 4: [1, 5], 5: [2, 3, 8],
|
|
488
|
+
....: 6: [4, 7], 7: [5, 8]}
|
|
489
|
+
sage: D = DiGraph(edgedict)
|
|
490
|
+
sage: M = Gammoid(D, roots=[2, 3, 4], groundset=range(2, 9))
|
|
491
|
+
sage: M1 = M.gammoid_extension(1)
|
|
492
|
+
sage: M1.groundset()
|
|
493
|
+
frozenset({1, 2, 3, 4, 5, 6, 7, 8})
|
|
494
|
+
sage: N = Gammoid(D, roots=[2, 3, 4])
|
|
495
|
+
sage: M1 == N
|
|
496
|
+
True
|
|
497
|
+
sage: M1.delete(1)
|
|
498
|
+
Gammoid of rank 3 on 7 elements
|
|
499
|
+
sage: M == M1.delete(1)
|
|
500
|
+
True
|
|
501
|
+
sage: M2 = M.gammoid_extension(9); sorted(M2.loops())
|
|
502
|
+
[8, 9]
|
|
503
|
+
sage: M4 = M.gammoid_extension(9, [1, 2, 3])
|
|
504
|
+
sage: M4.digraph().neighbors_out(9)
|
|
505
|
+
[1, 2, 3]
|
|
506
|
+
sage: M4.digraph().neighbors_in(9)
|
|
507
|
+
[]
|
|
508
|
+
|
|
509
|
+
TESTS::
|
|
510
|
+
|
|
511
|
+
sage: from sage.matroids.gammoid import Gammoid
|
|
512
|
+
sage: edgedict = {1: [2], 2: [3], 4: [1, 5], 5: [2, 3, 8],
|
|
513
|
+
....: 6: [4, 7], 7: [5, 8]}
|
|
514
|
+
sage: D = DiGraph(edgedict)
|
|
515
|
+
sage: M = Gammoid(D, roots=[2, 3, 4], groundset=range(2, 9))
|
|
516
|
+
sage: M.gammoid_extension(2)
|
|
517
|
+
Traceback (most recent call last):
|
|
518
|
+
...
|
|
519
|
+
ValueError: cannot extend by element already in groundset
|
|
520
|
+
sage: M.gammoid_extension(1, [2, 3, 4])
|
|
521
|
+
Traceback (most recent call last):
|
|
522
|
+
...
|
|
523
|
+
ValueError: neighbors of vertex in digraph cannot be changed
|
|
524
|
+
sage: M.gammoid_extension(9, [9])
|
|
525
|
+
Traceback (most recent call last):
|
|
526
|
+
...
|
|
527
|
+
ValueError: neighbors must already be in graph
|
|
528
|
+
"""
|
|
529
|
+
if vertex in self._groundset:
|
|
530
|
+
raise ValueError("cannot extend by element already in groundset")
|
|
531
|
+
elif vertex in self._G:
|
|
532
|
+
if neighbors:
|
|
533
|
+
raise ValueError("neighbors of vertex in digraph cannot be changed")
|
|
534
|
+
new_groundset = set(self._groundset).union([vertex])
|
|
535
|
+
return Gammoid(D=self._G, roots=self._roots,
|
|
536
|
+
groundset=new_groundset)
|
|
537
|
+
else:
|
|
538
|
+
if not set(neighbors).issubset(self._G.vertices()):
|
|
539
|
+
raise ValueError("neighbors must already be in graph")
|
|
540
|
+
D = self.digraph()
|
|
541
|
+
D.add_vertex(vertex)
|
|
542
|
+
for n in neighbors:
|
|
543
|
+
D.add_edge(vertex, n)
|
|
544
|
+
new_groundset = set(self._groundset).union([vertex])
|
|
545
|
+
return Gammoid(D=D, roots=self._roots, groundset=new_groundset)
|
|
546
|
+
|
|
547
|
+
def gammoid_extensions(self, vertices=None):
|
|
548
|
+
"""
|
|
549
|
+
Return an iterator of Gammoid extensions.
|
|
550
|
+
|
|
551
|
+
This will only consider extensions from vertices that are already present
|
|
552
|
+
in the digraph.
|
|
553
|
+
|
|
554
|
+
INPUT:
|
|
555
|
+
|
|
556
|
+
- ``vertices`` -- (optional) a list of vertices not in the digraph
|
|
557
|
+
|
|
558
|
+
OUTPUT:
|
|
559
|
+
|
|
560
|
+
An iterator of Gammoids. If ``vertices`` is not specified, every vertex
|
|
561
|
+
not already in the groundset will be considered.
|
|
562
|
+
|
|
563
|
+
EXAMPLES::
|
|
564
|
+
|
|
565
|
+
sage: from sage.matroids.gammoid import Gammoid
|
|
566
|
+
sage: M = Gammoid(digraphs.TransitiveTournament(5), roots=[3, 4],
|
|
567
|
+
....: groundset=[0, 1, 4])
|
|
568
|
+
sage: [sorted(M1.groundset()) for M1 in M.gammoid_extensions()]
|
|
569
|
+
[[0, 1, 2, 4], [0, 1, 3, 4]]
|
|
570
|
+
sage: N = Gammoid(digraphs.TransitiveTournament(5), roots=[3, 4])
|
|
571
|
+
sage: [sorted(N1.groundset()) for N1 in N.gammoid_extensions()]
|
|
572
|
+
[]
|
|
573
|
+
|
|
574
|
+
::
|
|
575
|
+
|
|
576
|
+
sage: from sage.matroids.gammoid import Gammoid
|
|
577
|
+
sage: edgelist =[(i, i+1) for i in range(10)]
|
|
578
|
+
sage: M = Gammoid(DiGraph(edgelist), roots=[9], groundset=[0])
|
|
579
|
+
sage: sum(1 for M1 in M.gammoid_extensions(vertices=[3, 4, 5]))
|
|
580
|
+
3
|
|
581
|
+
sage: sum(1 for M1 in M.gammoid_extensions())
|
|
582
|
+
9
|
|
583
|
+
sage: set([M1.is_isomorphic(matroids.Uniform(1, 2))
|
|
584
|
+
....: for M1 in M.gammoid_extensions()])
|
|
585
|
+
{True}
|
|
586
|
+
sage: len([M1 for M1 in M.gammoid_extensions([0, 1, 2])])
|
|
587
|
+
Traceback (most recent call last):
|
|
588
|
+
...
|
|
589
|
+
ValueError: vertices must be in the digraph and not already in the groundset
|
|
590
|
+
"""
|
|
591
|
+
free_vertices = set(self._G.vertices()).difference(self._groundset)
|
|
592
|
+
if vertices is None:
|
|
593
|
+
vertices = free_vertices
|
|
594
|
+
else:
|
|
595
|
+
vertices = set(vertices)
|
|
596
|
+
if not vertices.issubset(free_vertices):
|
|
597
|
+
raise ValueError("vertices must be in the digraph and not already in the groundset")
|
|
598
|
+
for v in vertices:
|
|
599
|
+
new_groundset = self._groundset.union([v])
|
|
600
|
+
yield Gammoid(self._G, self._roots, new_groundset)
|
|
Binary file
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
from sage.matroids.matroid cimport Matroid
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
cdef class GraphicMatroid(Matroid):
|
|
6
|
+
cdef frozenset _groundset
|
|
7
|
+
cdef readonly object _G
|
|
8
|
+
cdef dict _vertex_map
|
|
9
|
+
cdef dict _groundset_edge_map
|
|
10
|
+
cpdef frozenset groundset(self)
|
|
11
|
+
cpdef int _rank(self, frozenset X) except? -1
|
|
12
|
+
cpdef _vertex_stars(self)
|
|
13
|
+
cpdef _minor(self, contractions, deletions)
|
|
14
|
+
cpdef _has_minor(self, N, bint certificate=*)
|
|
15
|
+
cpdef int _corank(self, frozenset X) noexcept
|
|
16
|
+
cpdef bint _is_circuit(self, frozenset X) noexcept
|
|
17
|
+
cpdef frozenset _closure(self, frozenset X)
|
|
18
|
+
cpdef frozenset _max_independent(self, frozenset X)
|
|
19
|
+
cpdef frozenset _max_coindependent(self, frozenset X)
|
|
20
|
+
cpdef frozenset _circuit(self, frozenset X)
|
|
21
|
+
cpdef frozenset _coclosure(self, frozenset X)
|
|
22
|
+
cpdef bint _is_closed(self, frozenset X) noexcept
|
|
23
|
+
cpdef _is_isomorphic(self, other, certificate=*)
|
|
24
|
+
cpdef _isomorphism(self, other)
|
|
25
|
+
cpdef is_valid(self, certificate=*) noexcept
|
|
26
|
+
cpdef bint is_graphic(self, algorithm=*) except -1
|
|
27
|
+
cpdef bint is_regular(self, algorithm=*) except -1
|
|
28
|
+
cpdef graph(self)
|
|
29
|
+
cpdef vertex_map(self)
|
|
30
|
+
cpdef list groundset_to_edges(self, X)
|
|
31
|
+
cpdef _groundset_to_edges(self, X)
|
|
32
|
+
cpdef subgraph_from_set(self, X)
|
|
33
|
+
cpdef _subgraph_from_set(self, X)
|
|
34
|
+
cpdef graphic_extension(self, u, v=*, element=*)
|
|
35
|
+
cpdef graphic_coextension(self, u, v=*, X=*, element=*)
|
|
36
|
+
cpdef twist(self, X)
|
|
37
|
+
cpdef one_sum(self, X, u, v)
|
|
38
|
+
cpdef regular_matroid(self)
|
|
39
|
+
cpdef relabel(self, mapping)
|