passagemath-modules 10.6.31__cp314-cp314-macosx_13_0_arm64.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.31.dist-info/METADATA +281 -0
- passagemath_modules-10.6.31.dist-info/RECORD +807 -0
- passagemath_modules-10.6.31.dist-info/WHEEL +6 -0
- passagemath_modules-10.6.31.dist-info/top_level.txt +2 -0
- passagemath_modules.dylibs/libgfortran.5.dylib +0 -0
- passagemath_modules.dylibs/libgmp.10.dylib +0 -0
- passagemath_modules.dylibs/libgsl.28.dylib +0 -0
- passagemath_modules.dylibs/libmpc.3.dylib +0 -0
- passagemath_modules.dylibs/libmpfr.6.dylib +0 -0
- passagemath_modules.dylibs/libopenblasp-r0.3.29.dylib +0 -0
- passagemath_modules.dylibs/libquadmath.0.dylib +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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.so +0 -0
- sage/calculus/integration.pyx +698 -0
- sage/calculus/interpolation.cpython-314-darwin.so +0 -0
- sage/calculus/interpolation.pxd +13 -0
- sage/calculus/interpolation.pyx +387 -0
- sage/calculus/interpolators.cpython-314-darwin.so +0 -0
- sage/calculus/interpolators.pyx +326 -0
- sage/calculus/ode.cpython-314-darwin.so +0 -0
- sage/calculus/ode.pxd +5 -0
- sage/calculus/ode.pyx +610 -0
- sage/calculus/riemann.cpython-314-darwin.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-darwin.so +0 -0
- sage/calculus/transforms/dwt.pxd +7 -0
- sage/calculus/transforms/dwt.pyx +160 -0
- sage/calculus/transforms/fft.cpython-314-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.so +0 -0
- sage/libs/mpmath/utils.pxd +4 -0
- sage/libs/mpmath/utils.pyx +319 -0
- sage/matrix/action.cpython-314-darwin.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-darwin.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-darwin.so +0 -0
- sage/matrix/constructor.pyx +750 -0
- sage/matrix/docs.py +430 -0
- sage/matrix/echelon_matrix.cpython-314-darwin.so +0 -0
- sage/matrix/echelon_matrix.pyx +155 -0
- sage/matrix/matrix.pxd +2 -0
- sage/matrix/matrix0.cpython-314-darwin.so +0 -0
- sage/matrix/matrix0.pxd +68 -0
- sage/matrix/matrix0.pyx +6324 -0
- sage/matrix/matrix1.cpython-314-darwin.so +0 -0
- sage/matrix/matrix1.pxd +8 -0
- sage/matrix/matrix1.pyx +2851 -0
- sage/matrix/matrix2.cpython-314-darwin.so +0 -0
- sage/matrix/matrix2.pxd +25 -0
- sage/matrix/matrix2.pyx +20181 -0
- sage/matrix/matrix_cdv.cpython-314-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.so +0 -0
- sage/matrix/matrix_sparse.pxd +5 -0
- sage/matrix/matrix_sparse.pyx +1222 -0
- sage/matrix/matrix_window.cpython-314-darwin.so +0 -0
- sage/matrix/matrix_window.pxd +37 -0
- sage/matrix/matrix_window.pyx +242 -0
- sage/matrix/misc_mpfr.cpython-314-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.so +0 -0
- sage/matroids/extension.pxd +34 -0
- sage/matroids/extension.pyx +519 -0
- sage/matroids/flats_matroid.cpython-314-darwin.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-darwin.so +0 -0
- sage/matroids/graphic_matroid.pxd +39 -0
- sage/matroids/graphic_matroid.pyx +2024 -0
- sage/matroids/lean_matrix.cpython-314-darwin.so +0 -0
- sage/matroids/lean_matrix.pxd +126 -0
- sage/matroids/lean_matrix.pyx +3667 -0
- sage/matroids/linear_matroid.cpython-314-darwin.so +0 -0
- sage/matroids/linear_matroid.pxd +180 -0
- sage/matroids/linear_matroid.pyx +6649 -0
- sage/matroids/matroid.cpython-314-darwin.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-darwin.so +0 -0
- sage/matroids/set_system.pxd +38 -0
- sage/matroids/set_system.pyx +800 -0
- sage/matroids/transversal_matroid.cpython-314-darwin.so +0 -0
- sage/matroids/transversal_matroid.pxd +14 -0
- sage/matroids/transversal_matroid.pyx +893 -0
- sage/matroids/union_matroid.cpython-314-darwin.so +0 -0
- sage/matroids/union_matroid.pxd +20 -0
- sage/matroids/union_matroid.pyx +331 -0
- sage/matroids/unpickling.cpython-314-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.so +0 -0
- sage/rings/complex_conversion.pxd +8 -0
- sage/rings/complex_conversion.pyx +23 -0
- sage/rings/complex_double.cpython-314-darwin.so +0 -0
- sage/rings/complex_double.pxd +21 -0
- sage/rings/complex_double.pyx +2654 -0
- sage/rings/complex_mpc.cpython-314-darwin.so +0 -0
- sage/rings/complex_mpc.pxd +21 -0
- sage/rings/complex_mpc.pyx +2576 -0
- sage/rings/complex_mpfr.cpython-314-darwin.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-darwin.so +0 -0
- sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
- sage/rings/function_field/khuri_makdisi.cpython-314-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.so +0 -0
- sage/rings/real_mpfr.pxd +29 -0
- sage/rings/real_mpfr.pyx +6122 -0
- sage/rings/ring_extension.cpython-314-darwin.so +0 -0
- sage/rings/ring_extension.pxd +42 -0
- sage/rings/ring_extension.pyx +2779 -0
- sage/rings/ring_extension_conversion.cpython-314-darwin.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-darwin.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-darwin.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-darwin.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-darwin.so +0 -0
- sage/stats/hmm/chmm.pyx +1595 -0
- sage/stats/hmm/distributions.cpython-314-darwin.so +0 -0
- sage/stats/hmm/distributions.pxd +29 -0
- sage/stats/hmm/distributions.pyx +531 -0
- sage/stats/hmm/hmm.cpython-314-darwin.so +0 -0
- sage/stats/hmm/hmm.pxd +17 -0
- sage/stats/hmm/hmm.pyx +1388 -0
- sage/stats/hmm/util.cpython-314-darwin.so +0 -0
- sage/stats/hmm/util.pxd +7 -0
- sage/stats/hmm/util.pyx +165 -0
- sage/stats/intlist.cpython-314-darwin.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-darwin.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
|
Binary file
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
from sage.matroids.matroid cimport Matroid
|
|
3
|
+
|
|
4
|
+
cdef class CircuitClosuresMatroid(Matroid):
|
|
5
|
+
cdef frozenset _groundset # _E
|
|
6
|
+
cdef dict _circuit_closures # _CC
|
|
7
|
+
cdef int _matroid_rank # _R
|
|
8
|
+
cpdef frozenset groundset(self)
|
|
9
|
+
cpdef int _rank(self, frozenset X) except? -1
|
|
10
|
+
cpdef full_rank(self)
|
|
11
|
+
cpdef bint _is_independent(self, frozenset F) noexcept
|
|
12
|
+
cpdef frozenset _max_independent(self, frozenset F)
|
|
13
|
+
cpdef frozenset _circuit(self, frozenset F)
|
|
14
|
+
cpdef dict circuit_closures(self)
|
|
15
|
+
cpdef _is_isomorphic(self, other, certificate=*)
|
|
16
|
+
cpdef relabel(self, mapping)
|
|
@@ -0,0 +1,559 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
r"""
|
|
3
|
+
Circuit closures matroids
|
|
4
|
+
|
|
5
|
+
Matroids are characterized by a list of all tuples `(C, k)`, where `C` is the
|
|
6
|
+
closure of a circuit, and `k` the rank of `C`. The CircuitClosuresMatroid
|
|
7
|
+
class implements matroids using this information as data.
|
|
8
|
+
|
|
9
|
+
Construction
|
|
10
|
+
============
|
|
11
|
+
|
|
12
|
+
A ``CircuitClosuresMatroid`` can be created from another matroid or from a
|
|
13
|
+
list of circuit-closures. For a full description of allowed inputs, see
|
|
14
|
+
:class:`below <sage.matroids.circuit_closures_matroid.CircuitClosuresMatroid>`.
|
|
15
|
+
It is recommended to use the
|
|
16
|
+
:func:`Matroid() <sage.matroids.constructor.Matroid>` function for a more
|
|
17
|
+
flexible construction of a ``CircuitClosuresMatroid``. For direct access to
|
|
18
|
+
the ``CircuitClosuresMatroid`` constructor, run::
|
|
19
|
+
|
|
20
|
+
sage: from sage.matroids.advanced import *
|
|
21
|
+
|
|
22
|
+
See also :mod:`sage.matroids.advanced`.
|
|
23
|
+
|
|
24
|
+
EXAMPLES::
|
|
25
|
+
|
|
26
|
+
sage: from sage.matroids.advanced import *
|
|
27
|
+
sage: M1 = CircuitClosuresMatroid(groundset='abcdef',
|
|
28
|
+
....: circuit_closures={2: ['abc', 'ade'], 3: ['abcdef']})
|
|
29
|
+
sage: M2 = Matroid(circuit_closures={2: ['abc', 'ade'], 3: ['abcdef']})
|
|
30
|
+
sage: M3 = Matroid(circuit_closures=[(2, 'abc'),
|
|
31
|
+
....: (3, 'abcdef'), (2, 'ade')])
|
|
32
|
+
sage: M1 == M2
|
|
33
|
+
True
|
|
34
|
+
sage: M1 == M3
|
|
35
|
+
True
|
|
36
|
+
|
|
37
|
+
Note that the class does not implement custom minor and dual operations::
|
|
38
|
+
|
|
39
|
+
sage: from sage.matroids.advanced import *
|
|
40
|
+
sage: M = CircuitClosuresMatroid(groundset='abcdef',
|
|
41
|
+
....: circuit_closures={2: ['abc', 'ade'], 3: ['abcdef']})
|
|
42
|
+
sage: isinstance(M.contract('a'), MinorMatroid)
|
|
43
|
+
True
|
|
44
|
+
sage: isinstance(M.dual(), DualMatroid)
|
|
45
|
+
True
|
|
46
|
+
|
|
47
|
+
AUTHORS:
|
|
48
|
+
|
|
49
|
+
- Rudi Pendavingh, Stefan van Zwam (2013-04-01): initial version
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
# ****************************************************************************
|
|
53
|
+
# Copyright (C) 2013 Rudi Pendavingh <rudi.pendavingh@gmail.com>
|
|
54
|
+
# Copyright (C) 2013 Stefan van Zwam <stefanvanzwam@gmail.com>
|
|
55
|
+
#
|
|
56
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
57
|
+
# as published by the Free Software Foundation; either version 2 of
|
|
58
|
+
# the License, or (at your option) any later version.
|
|
59
|
+
# https://www.gnu.org/licenses/
|
|
60
|
+
# ****************************************************************************
|
|
61
|
+
|
|
62
|
+
from cpython.object cimport Py_EQ, Py_NE
|
|
63
|
+
from sage.structure.richcmp cimport rich_to_bool, richcmp
|
|
64
|
+
from sage.matroids.matroid cimport Matroid
|
|
65
|
+
from sage.matroids.set_system cimport SetSystem
|
|
66
|
+
from sage.matroids.utilities import setprint_s
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
cdef class CircuitClosuresMatroid(Matroid):
|
|
70
|
+
r"""
|
|
71
|
+
A general matroid `M` is characterized by its rank `r(M)` and the set of
|
|
72
|
+
pairs
|
|
73
|
+
|
|
74
|
+
`(k, \{` closure `(C) : C ` circuit of ` M, r(C)=k\})` for `k=0, .., r(M)-1`
|
|
75
|
+
|
|
76
|
+
As each independent set of size `k` is in at most one closure(`C`) of rank
|
|
77
|
+
`k`, and each closure(`C`) of rank `k` contains at least `k + 1`
|
|
78
|
+
independent sets of size `k`, there are at most `\binom{n}{k}/(k + 1)`
|
|
79
|
+
such closures-of-circuits of rank `k`. Each closure(`C`) takes `O(n)` bits
|
|
80
|
+
to store, giving an upper bound of `O(2^n)` on the space complexity of the
|
|
81
|
+
entire matroid.
|
|
82
|
+
|
|
83
|
+
A subset `X` of the groundset is independent if and only if
|
|
84
|
+
|
|
85
|
+
`| X \cap ` closure `(C) | \leq k` for all circuits `C` of `M` with
|
|
86
|
+
`r(C)=k`.
|
|
87
|
+
|
|
88
|
+
So determining whether a set is independent takes time proportional to the
|
|
89
|
+
space complexity of the matroid.
|
|
90
|
+
|
|
91
|
+
INPUT:
|
|
92
|
+
|
|
93
|
+
- ``M`` -- matroid (default: ``None``)
|
|
94
|
+
- ``groundset`` -- groundset of a matroid (default: ``None``)
|
|
95
|
+
- ``circuit_closures`` -- dictionary (default: ``None``); the collection of
|
|
96
|
+
circuit closures of a matroid presented as a dictionary whose keys are
|
|
97
|
+
ranks, and whose values are sets of circuit closures of the specified rank
|
|
98
|
+
|
|
99
|
+
OUTPUT:
|
|
100
|
+
|
|
101
|
+
- If the input is a matroid ``M``, return a ``CircuitClosuresMatroid``
|
|
102
|
+
instance representing ``M``.
|
|
103
|
+
- Otherwise, return a ``CircuitClosuresMatroid`` instance based on
|
|
104
|
+
``groundset`` and ``circuit_closures``.
|
|
105
|
+
|
|
106
|
+
.. NOTE::
|
|
107
|
+
|
|
108
|
+
For a more flexible means of input, use the ``Matroid()`` function.
|
|
109
|
+
|
|
110
|
+
EXAMPLES::
|
|
111
|
+
|
|
112
|
+
sage: from sage.matroids.advanced import *
|
|
113
|
+
sage: M = CircuitClosuresMatroid(matroids.catalog.Fano())
|
|
114
|
+
sage: M
|
|
115
|
+
Matroid of rank 3 on 7 elements with circuit-closures
|
|
116
|
+
{2: {{'a', 'b', 'f'}, {'a', 'c', 'e'}, {'a', 'd', 'g'},
|
|
117
|
+
{'b', 'c', 'd'}, {'b', 'e', 'g'}, {'c', 'f', 'g'},
|
|
118
|
+
{'d', 'e', 'f'}}, 3: {{'a', 'b', 'c', 'd', 'e', 'f', 'g'}}}
|
|
119
|
+
sage: M = CircuitClosuresMatroid(groundset='abcdefgh',
|
|
120
|
+
....: circuit_closures={3: ['edfg', 'acdg', 'bcfg', 'cefh',
|
|
121
|
+
....: 'afgh', 'abce', 'abdf', 'begh', 'bcdh', 'adeh'],
|
|
122
|
+
....: 4: ['abcdefgh']})
|
|
123
|
+
sage: M.equals(matroids.catalog.P8())
|
|
124
|
+
True
|
|
125
|
+
"""
|
|
126
|
+
|
|
127
|
+
# necessary (__init__, groundset, _rank)
|
|
128
|
+
|
|
129
|
+
def __init__(self, M=None, groundset=None, circuit_closures=None):
|
|
130
|
+
"""
|
|
131
|
+
Initialization of the matroid. See the class docstring for full
|
|
132
|
+
documentation.
|
|
133
|
+
|
|
134
|
+
EXAMPLES::
|
|
135
|
+
|
|
136
|
+
sage: from sage.matroids.advanced import *
|
|
137
|
+
sage: M = CircuitClosuresMatroid(matroids.catalog.Fano())
|
|
138
|
+
sage: M
|
|
139
|
+
Matroid of rank 3 on 7 elements with circuit-closures
|
|
140
|
+
{2: {{'a', 'b', 'f'}, {'a', 'c', 'e'}, {'a', 'd', 'g'},
|
|
141
|
+
{'b', 'c', 'd'}, {'b', 'e', 'g'}, {'c', 'f', 'g'},
|
|
142
|
+
{'d', 'e', 'f'}},
|
|
143
|
+
3: {{'a', 'b', 'c', 'd', 'e', 'f', 'g'}}}
|
|
144
|
+
|
|
145
|
+
sage: M = CircuitClosuresMatroid(groundset='abcdefgh',
|
|
146
|
+
....: circuit_closures={3: ['edfg', 'acdg', 'bcfg', 'cefh',
|
|
147
|
+
....: 'afgh', 'abce', 'abdf', 'begh', 'bcdh', 'adeh'],
|
|
148
|
+
....: 4: ['abcdefgh']})
|
|
149
|
+
sage: M.equals(matroids.catalog.P8())
|
|
150
|
+
True
|
|
151
|
+
|
|
152
|
+
TESTS::
|
|
153
|
+
|
|
154
|
+
sage: from sage.matroids.advanced import *
|
|
155
|
+
sage: M = CircuitClosuresMatroid(matroids.catalog.Fano())
|
|
156
|
+
sage: TestSuite(M).run()
|
|
157
|
+
"""
|
|
158
|
+
if M is not None:
|
|
159
|
+
self._groundset = M.groundset()
|
|
160
|
+
self._circuit_closures = M.circuit_closures()
|
|
161
|
+
else:
|
|
162
|
+
self._groundset = frozenset(groundset)
|
|
163
|
+
self._circuit_closures = {}
|
|
164
|
+
for k in circuit_closures:
|
|
165
|
+
self._circuit_closures[k] = frozenset([frozenset(X) for X in circuit_closures[k]])
|
|
166
|
+
self._matroid_rank = self.rank(self._groundset)
|
|
167
|
+
|
|
168
|
+
cpdef frozenset groundset(self):
|
|
169
|
+
"""
|
|
170
|
+
Return the groundset of the matroid.
|
|
171
|
+
|
|
172
|
+
The groundset is the set of elements that comprise the matroid.
|
|
173
|
+
|
|
174
|
+
OUTPUT: frozenset
|
|
175
|
+
|
|
176
|
+
EXAMPLES::
|
|
177
|
+
|
|
178
|
+
sage: M = matroids.catalog.Pappus()
|
|
179
|
+
sage: sorted(M.groundset())
|
|
180
|
+
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
|
|
181
|
+
"""
|
|
182
|
+
return frozenset(self._groundset)
|
|
183
|
+
|
|
184
|
+
cpdef int _rank(self, frozenset X) except? -1:
|
|
185
|
+
"""
|
|
186
|
+
Return the rank of a set ``X``.
|
|
187
|
+
|
|
188
|
+
This method does no checking on ``X``, and
|
|
189
|
+
``X`` may be assumed to have the same interface as ``frozenset``.
|
|
190
|
+
|
|
191
|
+
INPUT:
|
|
192
|
+
|
|
193
|
+
- ``X`` -- an object with Python's ``frozenset`` interface
|
|
194
|
+
|
|
195
|
+
OUTPUT: the rank of ``X`` in the matroid
|
|
196
|
+
|
|
197
|
+
EXAMPLES::
|
|
198
|
+
|
|
199
|
+
sage: M = matroids.catalog.NonPappus()
|
|
200
|
+
sage: M._rank(frozenset('abc'))
|
|
201
|
+
2
|
|
202
|
+
"""
|
|
203
|
+
return len(self._max_independent(X))
|
|
204
|
+
|
|
205
|
+
# optional
|
|
206
|
+
|
|
207
|
+
cpdef full_rank(self):
|
|
208
|
+
r"""
|
|
209
|
+
Return the rank of the matroid.
|
|
210
|
+
|
|
211
|
+
The *rank* of the matroid is the size of the largest independent
|
|
212
|
+
subset of the groundset.
|
|
213
|
+
|
|
214
|
+
OUTPUT: integer
|
|
215
|
+
|
|
216
|
+
EXAMPLES::
|
|
217
|
+
|
|
218
|
+
sage: M = matroids.catalog.Vamos()
|
|
219
|
+
sage: M.full_rank()
|
|
220
|
+
4
|
|
221
|
+
sage: M.dual().full_rank()
|
|
222
|
+
4
|
|
223
|
+
"""
|
|
224
|
+
return self._matroid_rank
|
|
225
|
+
|
|
226
|
+
cpdef bint _is_independent(self, frozenset F) noexcept:
|
|
227
|
+
"""
|
|
228
|
+
Test if input is independent.
|
|
229
|
+
|
|
230
|
+
INPUT:
|
|
231
|
+
|
|
232
|
+
- ``X`` -- an object with Python's ``frozenset`` interface containing
|
|
233
|
+
a subset of ``self.groundset()``
|
|
234
|
+
|
|
235
|
+
OUTPUT: boolean
|
|
236
|
+
|
|
237
|
+
EXAMPLES::
|
|
238
|
+
|
|
239
|
+
sage: M = matroids.catalog.Vamos()
|
|
240
|
+
sage: M._is_independent(frozenset(['a', 'b', 'c']))
|
|
241
|
+
True
|
|
242
|
+
sage: M._is_independent(frozenset(['a', 'b', 'c', 'd']))
|
|
243
|
+
False
|
|
244
|
+
"""
|
|
245
|
+
for r in sorted(self._circuit_closures):
|
|
246
|
+
if len(F) <= r:
|
|
247
|
+
break
|
|
248
|
+
for C in self._circuit_closures[r]:
|
|
249
|
+
S = F & C
|
|
250
|
+
if len(S) > r:
|
|
251
|
+
return False
|
|
252
|
+
return True
|
|
253
|
+
|
|
254
|
+
cpdef frozenset _max_independent(self, frozenset F):
|
|
255
|
+
"""
|
|
256
|
+
Compute a maximal independent subset.
|
|
257
|
+
|
|
258
|
+
INPUT:
|
|
259
|
+
|
|
260
|
+
- ``X`` -- an object with Python's ``frozenset`` interface containing
|
|
261
|
+
a subset of ``self.groundset()``
|
|
262
|
+
|
|
263
|
+
OUTPUT: a maximal independent subset of ``X``
|
|
264
|
+
|
|
265
|
+
EXAMPLES::
|
|
266
|
+
|
|
267
|
+
sage: M = matroids.catalog.Vamos()
|
|
268
|
+
sage: X = M._max_independent(frozenset(['a', 'c', 'd', 'e', 'f']))
|
|
269
|
+
sage: sorted(X) # random
|
|
270
|
+
['a', 'd', 'e', 'f']
|
|
271
|
+
sage: M.is_independent(X)
|
|
272
|
+
True
|
|
273
|
+
sage: all(M.is_dependent(X.union([y])) for y in M.groundset() if y not in X)
|
|
274
|
+
True
|
|
275
|
+
"""
|
|
276
|
+
I = set(F)
|
|
277
|
+
for r in sorted(self._circuit_closures.keys()):
|
|
278
|
+
if len(I) == 0:
|
|
279
|
+
break
|
|
280
|
+
for C in self._circuit_closures[r]:
|
|
281
|
+
if len(I) == 0:
|
|
282
|
+
break
|
|
283
|
+
S = I & C
|
|
284
|
+
while(len(S) > r):
|
|
285
|
+
I.discard(S.pop())
|
|
286
|
+
|
|
287
|
+
return frozenset(I)
|
|
288
|
+
|
|
289
|
+
cpdef frozenset _circuit(self, frozenset F):
|
|
290
|
+
"""
|
|
291
|
+
Return a minimal dependent subset.
|
|
292
|
+
|
|
293
|
+
INPUT:
|
|
294
|
+
|
|
295
|
+
- ``X`` -- an object with Python's ``frozenset`` interface containing
|
|
296
|
+
a subset of ``self.groundset()``
|
|
297
|
+
|
|
298
|
+
OUTPUT: a circuit contained in ``X``, if it exists; otherwise, an error
|
|
299
|
+
is raised
|
|
300
|
+
|
|
301
|
+
EXAMPLES::
|
|
302
|
+
|
|
303
|
+
sage: M = matroids.catalog.Vamos()
|
|
304
|
+
sage: sorted(M._circuit(frozenset(['a', 'c', 'd', 'e', 'f'])))
|
|
305
|
+
['c', 'd', 'e', 'f']
|
|
306
|
+
sage: sorted(M._circuit(frozenset(['a', 'c', 'd'])))
|
|
307
|
+
Traceback (most recent call last):
|
|
308
|
+
...
|
|
309
|
+
ValueError: no circuit in independent set
|
|
310
|
+
"""
|
|
311
|
+
for r in sorted(self._circuit_closures):
|
|
312
|
+
for C in self._circuit_closures[r]:
|
|
313
|
+
S = set(F & C)
|
|
314
|
+
if len(S) > r:
|
|
315
|
+
while len(S) > r + 1:
|
|
316
|
+
S.pop()
|
|
317
|
+
return frozenset(S)
|
|
318
|
+
raise ValueError("no circuit in independent set")
|
|
319
|
+
|
|
320
|
+
cpdef dict circuit_closures(self):
|
|
321
|
+
"""
|
|
322
|
+
Return the closures of circuits of the matroid.
|
|
323
|
+
|
|
324
|
+
A *circuit closure* is a closed set containing a circuit.
|
|
325
|
+
|
|
326
|
+
OUTPUT: dictionary containing the circuit closures of the matroid,
|
|
327
|
+
indexed by their ranks
|
|
328
|
+
|
|
329
|
+
.. SEEALSO::
|
|
330
|
+
|
|
331
|
+
:meth:`Matroid.circuit() <sage.matroids.matroid.Matroid.circuit>`,
|
|
332
|
+
:meth:`Matroid.closure() <sage.matroids.matroid.Matroid.closure>`
|
|
333
|
+
|
|
334
|
+
EXAMPLES::
|
|
335
|
+
|
|
336
|
+
sage: from sage.matroids.advanced import *
|
|
337
|
+
sage: M = CircuitClosuresMatroid(matroids.catalog.Fano())
|
|
338
|
+
sage: CC = M.circuit_closures()
|
|
339
|
+
sage: len(CC[2])
|
|
340
|
+
7
|
|
341
|
+
sage: len(CC[3])
|
|
342
|
+
1
|
|
343
|
+
sage: len(CC[1])
|
|
344
|
+
Traceback (most recent call last):
|
|
345
|
+
...
|
|
346
|
+
KeyError: 1
|
|
347
|
+
sage: [sorted(X) for X in CC[3]]
|
|
348
|
+
[['a', 'b', 'c', 'd', 'e', 'f', 'g']]
|
|
349
|
+
"""
|
|
350
|
+
return self._circuit_closures
|
|
351
|
+
|
|
352
|
+
cpdef _is_isomorphic(self, other, certificate=False):
|
|
353
|
+
"""
|
|
354
|
+
Test if ``self`` is isomorphic to ``other``.
|
|
355
|
+
|
|
356
|
+
Internal version that performs no checks on input.
|
|
357
|
+
|
|
358
|
+
INPUT:
|
|
359
|
+
|
|
360
|
+
- ``other`` -- matroid
|
|
361
|
+
- ``certificate`` -- boolean (default: ``False``)
|
|
362
|
+
|
|
363
|
+
OUTPUT: boolean, and, if ``certificate = True``, a dictionary giving
|
|
364
|
+
the isomorphism or ``None``
|
|
365
|
+
|
|
366
|
+
.. NOTE::
|
|
367
|
+
|
|
368
|
+
Internal version that does no input checking.
|
|
369
|
+
|
|
370
|
+
EXAMPLES::
|
|
371
|
+
|
|
372
|
+
sage: from sage.matroids.advanced import *
|
|
373
|
+
sage: M1 = CircuitClosuresMatroid(matroids.Wheel(3))
|
|
374
|
+
sage: M2 = matroids.CompleteGraphic(4) # needs sage.graphs
|
|
375
|
+
sage: M1._is_isomorphic(M2) # needs sage.graphs
|
|
376
|
+
True
|
|
377
|
+
sage: M1._is_isomorphic(M2, certificate=True) # needs sage.graphs
|
|
378
|
+
(True, {0: 0, 1: 1, 2: 2, 3: 3, 4: 5, 5: 4})
|
|
379
|
+
sage: M1 = CircuitClosuresMatroid(matroids.catalog.Fano())
|
|
380
|
+
sage: M2 = matroids.catalog.NonFano()
|
|
381
|
+
sage: M1._is_isomorphic(M2)
|
|
382
|
+
False
|
|
383
|
+
sage: M1._is_isomorphic(M2, certificate=True)
|
|
384
|
+
(False, None)
|
|
385
|
+
"""
|
|
386
|
+
if certificate:
|
|
387
|
+
return self._is_isomorphic(other), self._isomorphism(other)
|
|
388
|
+
N = CircuitClosuresMatroid(other)
|
|
389
|
+
if sorted(self._circuit_closures.keys()) != sorted(N._circuit_closures.keys()):
|
|
390
|
+
return False
|
|
391
|
+
SM = SetSystem(self.groundset())
|
|
392
|
+
for r in self._circuit_closures:
|
|
393
|
+
for C in self._circuit_closures[r]:
|
|
394
|
+
SM.append(C)
|
|
395
|
+
SN = SetSystem(N.groundset())
|
|
396
|
+
for r in N._circuit_closures:
|
|
397
|
+
for C in N._circuit_closures[r]:
|
|
398
|
+
SN.append(C)
|
|
399
|
+
return SM._isomorphism(SN) is not None
|
|
400
|
+
|
|
401
|
+
# representation
|
|
402
|
+
|
|
403
|
+
def _repr_(self):
|
|
404
|
+
"""
|
|
405
|
+
Return a string representation of the matroid.
|
|
406
|
+
|
|
407
|
+
EXAMPLES::
|
|
408
|
+
|
|
409
|
+
sage: M = matroids.catalog.Vamos()
|
|
410
|
+
sage: print(M._repr_())
|
|
411
|
+
Matroid of rank 4 on 8 elements with circuit-closures
|
|
412
|
+
{3: {{'a', 'b', 'c', 'd'}, {'a', 'b', 'e', 'f'},
|
|
413
|
+
{'a', 'b', 'g', 'h'}, {'c', 'd', 'e', 'f'},
|
|
414
|
+
{'e', 'f', 'g', 'h'}},
|
|
415
|
+
4: {{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'}}}
|
|
416
|
+
"""
|
|
417
|
+
return Matroid._repr_(self) + " with circuit-closures\n" + setprint_s(self._circuit_closures)
|
|
418
|
+
|
|
419
|
+
# comparison
|
|
420
|
+
|
|
421
|
+
def __hash__(self):
|
|
422
|
+
r"""
|
|
423
|
+
Return an invariant of the matroid.
|
|
424
|
+
|
|
425
|
+
This function is called when matroids are added to a set. It is very
|
|
426
|
+
desirable to override it so it can distinguish matroids on the same
|
|
427
|
+
groundset, which is a very typical use case!
|
|
428
|
+
|
|
429
|
+
.. WARNING::
|
|
430
|
+
|
|
431
|
+
This method is linked to ``__richcmp__`` (in Cython) and ``__cmp__``
|
|
432
|
+
or ``__eq__``/``__ne__`` (in Python). If you override one, you
|
|
433
|
+
should (and, in Cython, \emph{must}) override the other!
|
|
434
|
+
|
|
435
|
+
EXAMPLES::
|
|
436
|
+
|
|
437
|
+
sage: M = matroids.catalog.Vamos()
|
|
438
|
+
sage: N = matroids.catalog.Vamos()
|
|
439
|
+
sage: hash(M) == hash(N)
|
|
440
|
+
True
|
|
441
|
+
sage: O = matroids.catalog.NonVamos()
|
|
442
|
+
sage: hash(M) == hash(O)
|
|
443
|
+
False
|
|
444
|
+
"""
|
|
445
|
+
return hash(tuple([self.groundset(), tuple([(r, len(self._circuit_closures[r])) for r in sorted(self._circuit_closures.keys())])]))
|
|
446
|
+
|
|
447
|
+
def __richcmp__(left, right, int op):
|
|
448
|
+
r"""
|
|
449
|
+
Compare two matroids.
|
|
450
|
+
|
|
451
|
+
We take a very restricted view on equality: the objects need to be of
|
|
452
|
+
the exact same type (so no subclassing) and the internal data need to
|
|
453
|
+
be the same. For ``BasisMatroid``s, this means that the groundsets and
|
|
454
|
+
the sets of bases of the two matroids are equal.
|
|
455
|
+
|
|
456
|
+
EXAMPLES::
|
|
457
|
+
|
|
458
|
+
sage: M = matroids.catalog.Pappus()
|
|
459
|
+
sage: N = matroids.catalog.NonPappus()
|
|
460
|
+
sage: M == N
|
|
461
|
+
False
|
|
462
|
+
sage: N = Matroid(M.bases())
|
|
463
|
+
sage: M == N
|
|
464
|
+
False
|
|
465
|
+
"""
|
|
466
|
+
cdef CircuitClosuresMatroid lt, rt
|
|
467
|
+
if op not in [Py_EQ, Py_NE]:
|
|
468
|
+
return NotImplemented
|
|
469
|
+
if type(left) is not type(right):
|
|
470
|
+
return NotImplemented
|
|
471
|
+
lt = <CircuitClosuresMatroid> left
|
|
472
|
+
rt = <CircuitClosuresMatroid> right
|
|
473
|
+
if lt.groundset() != rt.groundset():
|
|
474
|
+
return rich_to_bool(op, 1)
|
|
475
|
+
if lt.full_rank() != rt.full_rank():
|
|
476
|
+
return rich_to_bool(op, 1)
|
|
477
|
+
return richcmp(lt._circuit_closures, rt._circuit_closures, op)
|
|
478
|
+
|
|
479
|
+
# copying, loading, saving
|
|
480
|
+
|
|
481
|
+
def __reduce__(self):
|
|
482
|
+
"""
|
|
483
|
+
Save the matroid for later reloading.
|
|
484
|
+
|
|
485
|
+
OUTPUT:
|
|
486
|
+
|
|
487
|
+
A tuple ``(unpickle, (version, data))``, where ``unpickle`` is the
|
|
488
|
+
name of a function that, when called with ``(version, data)``,
|
|
489
|
+
produces a matroid isomorphic to ``self``. ``version`` is an integer
|
|
490
|
+
(currently 0) and ``data`` is a tuple ``(E, CC, name)`` where ``E`` is
|
|
491
|
+
the groundset, ``CC`` is the dictionary of circuit closures, and
|
|
492
|
+
``name`` is a custom name.
|
|
493
|
+
|
|
494
|
+
EXAMPLES::
|
|
495
|
+
|
|
496
|
+
sage: M = matroids.catalog.Vamos()
|
|
497
|
+
sage: M == loads(dumps(M)) # indirect doctest
|
|
498
|
+
True
|
|
499
|
+
sage: M.reset_name()
|
|
500
|
+
sage: loads(dumps(M))
|
|
501
|
+
Matroid of rank 4 on 8 elements with circuit-closures
|
|
502
|
+
{3: {{'a', 'b', 'c', 'd'}, {'a', 'b', 'e', 'f'},
|
|
503
|
+
{'a', 'b', 'g', 'h'}, {'c', 'd', 'e', 'f'},
|
|
504
|
+
{'e', 'f', 'g', 'h'}},
|
|
505
|
+
4: {{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'}}}
|
|
506
|
+
"""
|
|
507
|
+
import sage.matroids.unpickling
|
|
508
|
+
data = (self._groundset, self._circuit_closures, self.get_custom_name())
|
|
509
|
+
version = 0
|
|
510
|
+
return sage.matroids.unpickling.unpickle_circuit_closures_matroid, (version, data)
|
|
511
|
+
|
|
512
|
+
cpdef relabel(self, mapping):
|
|
513
|
+
r"""
|
|
514
|
+
Return an isomorphic matroid with relabeled groundset.
|
|
515
|
+
|
|
516
|
+
The output is obtained by relabeling each element `e` by
|
|
517
|
+
``mapping[e]``, where ``mapping`` is a given injective map. If
|
|
518
|
+
``mapping[e]`` is not defined, then the identity map is assumed.
|
|
519
|
+
|
|
520
|
+
INPUT:
|
|
521
|
+
|
|
522
|
+
- ``mapping`` -- a Python object such that ``mapping[e]`` is the new
|
|
523
|
+
label of `e`
|
|
524
|
+
|
|
525
|
+
OUTPUT: matroid
|
|
526
|
+
|
|
527
|
+
EXAMPLES::
|
|
528
|
+
|
|
529
|
+
sage: # needs sage.rings.finite_rings
|
|
530
|
+
sage: from sage.matroids.circuit_closures_matroid import CircuitClosuresMatroid
|
|
531
|
+
sage: M = CircuitClosuresMatroid(matroids.catalog.RelaxedNonFano())
|
|
532
|
+
sage: sorted(M.groundset())
|
|
533
|
+
[0, 1, 2, 3, 4, 5, 6]
|
|
534
|
+
sage: N = M.relabel({'g': 'x', 0: 'z'}) # 'g': 'x' is ignored
|
|
535
|
+
sage: from sage.matroids.utilities import cmp_elements_key
|
|
536
|
+
sage: sorted(N.groundset(), key=cmp_elements_key)
|
|
537
|
+
[1, 2, 3, 4, 5, 6, 'z']
|
|
538
|
+
sage: M.is_isomorphic(N)
|
|
539
|
+
True
|
|
540
|
+
|
|
541
|
+
TESTS::
|
|
542
|
+
|
|
543
|
+
sage: # needs sage.rings.finite_rings
|
|
544
|
+
sage: from sage.matroids.circuit_closures_matroid import CircuitClosuresMatroid
|
|
545
|
+
sage: M = CircuitClosuresMatroid(matroids.catalog.RelaxedNonFano())
|
|
546
|
+
sage: f = {0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e', 5: 'f', 6: 'g'}
|
|
547
|
+
sage: N = M.relabel(f)
|
|
548
|
+
sage: for S in powerset(M.groundset()):
|
|
549
|
+
....: assert M.rank(S) == N.rank([f[x] for x in S])
|
|
550
|
+
"""
|
|
551
|
+
d = self._relabel_map(mapping)
|
|
552
|
+
E = [d[x] for x in self.groundset()]
|
|
553
|
+
CC = {}
|
|
554
|
+
for i in self.circuit_closures():
|
|
555
|
+
CC[i] = [[d[y] for y in x] for x in self._circuit_closures[i]]
|
|
556
|
+
M = CircuitClosuresMatroid(groundset=E, circuit_closures=CC)
|
|
557
|
+
return M
|
|
558
|
+
|
|
559
|
+
# todo: customized minor, extend methods.
|
|
Binary file
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
from sage.matroids.matroid cimport Matroid
|
|
3
|
+
from sage.matroids.set_system cimport SetSystem
|
|
4
|
+
|
|
5
|
+
cdef class CircuitsMatroid(Matroid):
|
|
6
|
+
cdef frozenset _groundset
|
|
7
|
+
cdef int _matroid_rank
|
|
8
|
+
cdef set _C # circuits
|
|
9
|
+
cdef dict _k_C # k-circuits (k=len)
|
|
10
|
+
cdef list _sorted_C_lens
|
|
11
|
+
cdef bint _nsc_defined
|
|
12
|
+
cpdef frozenset groundset(self)
|
|
13
|
+
cpdef int _rank(self, frozenset X) except? -1
|
|
14
|
+
cpdef full_rank(self)
|
|
15
|
+
cpdef bint _is_independent(self, frozenset X) noexcept
|
|
16
|
+
cpdef frozenset _max_independent(self, frozenset X)
|
|
17
|
+
cpdef frozenset _circuit(self, frozenset X)
|
|
18
|
+
cpdef frozenset _closure(self, frozenset X)
|
|
19
|
+
|
|
20
|
+
# enumeration
|
|
21
|
+
cpdef SetSystem independent_sets(self, long k=*)
|
|
22
|
+
cpdef SetSystem dependent_sets(self, long k)
|
|
23
|
+
cpdef SetSystem circuits(self, k=*)
|
|
24
|
+
cpdef SetSystem nonspanning_circuits(self)
|
|
25
|
+
cpdef SetSystem no_broken_circuits_facets(self, ordering=*, reduced=*)
|
|
26
|
+
cpdef SetSystem no_broken_circuits_sets(self, ordering=*, reduced=*)
|
|
27
|
+
cpdef broken_circuit_complex(self, ordering=*, reduced=*)
|
|
28
|
+
|
|
29
|
+
# properties
|
|
30
|
+
cpdef girth(self)
|
|
31
|
+
cpdef bint is_paving(self) noexcept
|
|
32
|
+
|
|
33
|
+
# isomorphism and relabeling
|
|
34
|
+
cpdef _is_isomorphic(self, other, certificate=*)
|
|
35
|
+
cpdef relabel(self, mapping)
|
|
36
|
+
|
|
37
|
+
# verification
|
|
38
|
+
cpdef is_valid(self, certificate=*)
|