passagemath-modules 10.6.31__cp314-cp314-macosx_13_0_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of passagemath-modules might be problematic. Click here for more details.
- passagemath_modules-10.6.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
|
@@ -0,0 +1,685 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
r"""
|
|
3
|
+
Quotients of modules with basis
|
|
4
|
+
"""
|
|
5
|
+
# ****************************************************************************
|
|
6
|
+
# Copyright (C) 2010-2015 Florent Hivert <Florent.Hivert@univ-mlv.fr>
|
|
7
|
+
#
|
|
8
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
9
|
+
# https://www.gnu.org/licenses/
|
|
10
|
+
# *****************************************************************************
|
|
11
|
+
|
|
12
|
+
from sage.misc.cachefunc import cached_method
|
|
13
|
+
from sage.sets.family import Family
|
|
14
|
+
from sage.combinat.free_module import CombinatorialFreeModule
|
|
15
|
+
from sage.misc.lazy_attribute import lazy_attribute
|
|
16
|
+
from sage.categories.modules_with_basis import ModulesWithBasis
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class QuotientModuleWithBasis(CombinatorialFreeModule):
|
|
20
|
+
r"""
|
|
21
|
+
A class for quotients of a module with basis by a submodule.
|
|
22
|
+
|
|
23
|
+
INPUT:
|
|
24
|
+
|
|
25
|
+
- ``submodule`` -- a submodule of ``self``
|
|
26
|
+
- ``category`` -- a category (default: ``ModulesWithBasis(submodule.base_ring())``)
|
|
27
|
+
|
|
28
|
+
``submodule`` should be a free submodule admitting a basis in
|
|
29
|
+
unitriangular echelon form. Typically ``submodule`` is a
|
|
30
|
+
:class:`SubmoduleWithBasis` as returned by
|
|
31
|
+
:meth:`Modules.WithBasis.ParentMethods.submodule`.
|
|
32
|
+
|
|
33
|
+
The ``lift`` method should have a method
|
|
34
|
+
``.cokernel_basis_indices`` that computes the indexing set of a
|
|
35
|
+
subset `B` of the basis of ``self`` that spans some supplementary
|
|
36
|
+
of ``submodule`` in ``self`` (typically the non characteristic
|
|
37
|
+
columns of the aforementioned echelon form). ``submodule`` should
|
|
38
|
+
further implement a ``submodule.reduce(x)`` method that returns
|
|
39
|
+
the unique element in the span of `B` which is equivalent to `x`
|
|
40
|
+
modulo ``submodule``.
|
|
41
|
+
|
|
42
|
+
This is meant to be constructed via
|
|
43
|
+
:meth:`Modules.WithBasis.FiniteDimensional.ParentMethods.quotient_module`
|
|
44
|
+
|
|
45
|
+
This differs from :class:`sage.rings.quotient_ring.QuotientRing`
|
|
46
|
+
in the following ways:
|
|
47
|
+
|
|
48
|
+
- ``submodule`` needs not be an ideal. If it is, the
|
|
49
|
+
transportation of the ring structure is taken care of by the
|
|
50
|
+
``Subquotients`` categories.
|
|
51
|
+
|
|
52
|
+
- Thanks to ``.cokernel_basis_indices``, we know the indices of a
|
|
53
|
+
basis of the quotient, and elements are represented directly in
|
|
54
|
+
the free module spanned by those indices rather than by wrapping
|
|
55
|
+
elements of the ambient space.
|
|
56
|
+
|
|
57
|
+
There is room for sharing more code between those two
|
|
58
|
+
implementations and generalizing them. See :issue:`18204`.
|
|
59
|
+
|
|
60
|
+
.. SEEALSO::
|
|
61
|
+
|
|
62
|
+
- :meth:`Modules.WithBasis.ParentMethods.submodule`
|
|
63
|
+
- :meth:`Modules.WithBasis.FiniteDimensional.ParentMethods.quotient_module`
|
|
64
|
+
- :class:`SubmoduleWithBasis`
|
|
65
|
+
- :class:`sage.rings.quotient_ring.QuotientRing`
|
|
66
|
+
"""
|
|
67
|
+
@staticmethod
|
|
68
|
+
def __classcall_private__(cls, submodule, category=None):
|
|
69
|
+
r"""
|
|
70
|
+
Normalize the input.
|
|
71
|
+
|
|
72
|
+
TESTS::
|
|
73
|
+
|
|
74
|
+
sage: from sage.modules.with_basis.subquotient import QuotientModuleWithBasis
|
|
75
|
+
sage: X = CombinatorialFreeModule(QQ, range(3)); x = X.basis()
|
|
76
|
+
sage: I = X.submodule( (x[0]-x[1], x[1]-x[2]) )
|
|
77
|
+
sage: J1 = QuotientModuleWithBasis(I)
|
|
78
|
+
sage: J2 = QuotientModuleWithBasis(I, category=Modules(QQ).WithBasis().Quotients())
|
|
79
|
+
sage: J1 is J2
|
|
80
|
+
True
|
|
81
|
+
"""
|
|
82
|
+
default_category = ModulesWithBasis(submodule.category().base_ring()).Quotients()
|
|
83
|
+
category = default_category.or_subcategory(category, join=True)
|
|
84
|
+
return super().__classcall__(cls, submodule, category)
|
|
85
|
+
|
|
86
|
+
def __init__(self, submodule, category, *args, **opts):
|
|
87
|
+
r"""
|
|
88
|
+
Initialize this quotient of a module with basis by a submodule.
|
|
89
|
+
|
|
90
|
+
TESTS::
|
|
91
|
+
|
|
92
|
+
sage: from sage.modules.with_basis.subquotient import QuotientModuleWithBasis
|
|
93
|
+
sage: X = CombinatorialFreeModule(QQ, range(3), prefix='x'); x = X.basis()
|
|
94
|
+
sage: I = X.submodule( (x[0]-x[1], x[1]-x[2]) )
|
|
95
|
+
sage: Y = QuotientModuleWithBasis(I)
|
|
96
|
+
sage: Y.print_options(prefix='y')
|
|
97
|
+
sage: Y
|
|
98
|
+
Free module generated by {2} over Rational Field
|
|
99
|
+
sage: Y.category()
|
|
100
|
+
Join of Category of finite dimensional vector spaces with basis over Rational Field and Category of quotients of sets
|
|
101
|
+
sage: Y.basis().list()
|
|
102
|
+
[y[2]]
|
|
103
|
+
sage: TestSuite(Y).run()
|
|
104
|
+
"""
|
|
105
|
+
self._submodule = submodule
|
|
106
|
+
self._ambient = submodule.ambient()
|
|
107
|
+
embedding = submodule.lift
|
|
108
|
+
indices = embedding.cokernel_basis_indices()
|
|
109
|
+
CombinatorialFreeModule.__init__(self,
|
|
110
|
+
submodule.base_ring(), indices,
|
|
111
|
+
category=category, *args, **opts)
|
|
112
|
+
|
|
113
|
+
def ambient(self):
|
|
114
|
+
r"""
|
|
115
|
+
Return the ambient space of ``self``.
|
|
116
|
+
|
|
117
|
+
EXAMPLES::
|
|
118
|
+
|
|
119
|
+
sage: X = CombinatorialFreeModule(QQ, range(3), prefix='x'); x = X.basis()
|
|
120
|
+
sage: Y = X.quotient_module((x[0]-x[1], x[1]-x[2]))
|
|
121
|
+
sage: Y.ambient() is X
|
|
122
|
+
True
|
|
123
|
+
"""
|
|
124
|
+
return self._ambient
|
|
125
|
+
|
|
126
|
+
def lift(self, x):
|
|
127
|
+
r"""
|
|
128
|
+
Lift ``x`` to the ambient space of ``self``.
|
|
129
|
+
|
|
130
|
+
INPUT:
|
|
131
|
+
|
|
132
|
+
- ``x`` -- an element of ``self``
|
|
133
|
+
|
|
134
|
+
EXAMPLES::
|
|
135
|
+
|
|
136
|
+
sage: X = CombinatorialFreeModule(QQ, range(3), prefix='x'); x = X.basis()
|
|
137
|
+
sage: Y = X.quotient_module((x[0]-x[1], x[1]-x[2])); y = Y.basis()
|
|
138
|
+
sage: Y.lift(y[2])
|
|
139
|
+
x[2]
|
|
140
|
+
"""
|
|
141
|
+
assert x in self
|
|
142
|
+
return self._ambient._from_dict(x._monomial_coefficients)
|
|
143
|
+
|
|
144
|
+
def retract(self, x):
|
|
145
|
+
r"""
|
|
146
|
+
Retract an element of the ambient space by projecting it back to ``self``.
|
|
147
|
+
|
|
148
|
+
INPUT:
|
|
149
|
+
|
|
150
|
+
- ``x`` -- an element of the ambient space of ``self``
|
|
151
|
+
|
|
152
|
+
EXAMPLES::
|
|
153
|
+
|
|
154
|
+
sage: X = CombinatorialFreeModule(QQ, range(3), prefix='x'); x = X.basis()
|
|
155
|
+
sage: Y = X.quotient_module((x[0]-x[1], x[1]-x[2])); y = Y.basis()
|
|
156
|
+
sage: Y.print_options(prefix='y')
|
|
157
|
+
sage: Y.retract(x[0])
|
|
158
|
+
y[2]
|
|
159
|
+
sage: Y.retract(x[1])
|
|
160
|
+
y[2]
|
|
161
|
+
sage: Y.retract(x[2])
|
|
162
|
+
y[2]
|
|
163
|
+
"""
|
|
164
|
+
return self._from_dict(self._submodule.reduce(x)._monomial_coefficients)
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
class SubmoduleWithBasis(CombinatorialFreeModule):
|
|
168
|
+
r"""
|
|
169
|
+
A base class for submodules of a ModuleWithBasis spanned by a
|
|
170
|
+
(possibly infinite) basis in echelon form.
|
|
171
|
+
|
|
172
|
+
INPUT:
|
|
173
|
+
|
|
174
|
+
- ``basis`` -- a family of elements in echelon form in some
|
|
175
|
+
:class:`module with basis <ModulesWithBasis>` `V`, or data that
|
|
176
|
+
can be converted into such a family
|
|
177
|
+
|
|
178
|
+
- ``support_order`` -- an ordering of the support of ``basis``
|
|
179
|
+
expressed in ``ambient`` given as a list
|
|
180
|
+
|
|
181
|
+
- ``unitriangular`` -- if the lift morphism is unitriangular
|
|
182
|
+
|
|
183
|
+
- ``ambient`` -- the ambient space `V`
|
|
184
|
+
|
|
185
|
+
- ``category`` -- a category
|
|
186
|
+
|
|
187
|
+
Further arguments are passed down to
|
|
188
|
+
:class:`CombinatorialFreeModule`.
|
|
189
|
+
|
|
190
|
+
This is meant to be constructed via
|
|
191
|
+
:meth:`Modules.WithBasis.ParentMethods.submodule`.
|
|
192
|
+
|
|
193
|
+
.. SEEALSO::
|
|
194
|
+
|
|
195
|
+
- :meth:`Modules.WithBasis.ParentMethods.submodule`
|
|
196
|
+
- :class:`QuotientModuleWithBasis`
|
|
197
|
+
"""
|
|
198
|
+
@staticmethod
|
|
199
|
+
def __classcall_private__(cls, basis, support_order, ambient=None,
|
|
200
|
+
unitriangular=False, category=None, *args, **opts):
|
|
201
|
+
r"""
|
|
202
|
+
Normalize the input.
|
|
203
|
+
|
|
204
|
+
TESTS::
|
|
205
|
+
|
|
206
|
+
sage: from sage.modules.with_basis.subquotient import SubmoduleWithBasis
|
|
207
|
+
sage: X = CombinatorialFreeModule(QQ, range(3)); x = X.basis()
|
|
208
|
+
sage: Y1 = SubmoduleWithBasis((x[0]-x[1], x[1]-x[2]), [0,1,2], X)
|
|
209
|
+
sage: Y2 = SubmoduleWithBasis([x[0]-x[1], x[1]-x[2]], (0,1,2), X)
|
|
210
|
+
sage: Y1 is Y2
|
|
211
|
+
True
|
|
212
|
+
"""
|
|
213
|
+
basis = Family(basis)
|
|
214
|
+
if ambient is None:
|
|
215
|
+
ambient = basis.an_element().parent()
|
|
216
|
+
Mod = ModulesWithBasis(ambient.category().base_ring())
|
|
217
|
+
default_category = Mod.Subobjects()
|
|
218
|
+
# Submodules of filtered modules are always canonically filtered.
|
|
219
|
+
# We add this to the category if it has not been explicitly passed.
|
|
220
|
+
if category is None and ambient.category().is_subcategory(Mod.Filtered()):
|
|
221
|
+
default_category = default_category.Filtered()
|
|
222
|
+
category = default_category.or_subcategory(category, join=True)
|
|
223
|
+
return super().__classcall__(cls, basis, tuple(support_order),
|
|
224
|
+
ambient, unitriangular, category,
|
|
225
|
+
*args, **opts)
|
|
226
|
+
|
|
227
|
+
def __init__(self, basis, support_order, ambient, unitriangular, category,
|
|
228
|
+
*args, **opts):
|
|
229
|
+
r"""
|
|
230
|
+
Initialization.
|
|
231
|
+
|
|
232
|
+
TESTS::
|
|
233
|
+
|
|
234
|
+
sage: from sage.modules.with_basis.subquotient import SubmoduleWithBasis
|
|
235
|
+
sage: X = CombinatorialFreeModule(QQ, range(3), prefix='x'); x = X.basis()
|
|
236
|
+
sage: ybas = (x[0]-x[1], x[1]-x[2])
|
|
237
|
+
sage: Y = SubmoduleWithBasis(ybas, [0, 1, 2], X)
|
|
238
|
+
sage: Y.print_options(prefix='y')
|
|
239
|
+
sage: Y.basis().list()
|
|
240
|
+
[y[0], y[1]]
|
|
241
|
+
sage: [ y.lift() for y in Y.basis() ]
|
|
242
|
+
[x[0] - x[1], x[1] - x[2]]
|
|
243
|
+
sage: TestSuite(Y).run()
|
|
244
|
+
"""
|
|
245
|
+
ring = ambient.base_ring()
|
|
246
|
+
CombinatorialFreeModule.__init__(self, ring, basis.keys(),
|
|
247
|
+
category=category.Subobjects(),
|
|
248
|
+
*args, **opts)
|
|
249
|
+
self._ambient = ambient
|
|
250
|
+
self._basis = basis
|
|
251
|
+
self._unitriangular = unitriangular
|
|
252
|
+
self._support_order = support_order
|
|
253
|
+
self.lift_on_basis = self._basis.__getitem__
|
|
254
|
+
self.lift.register_as_coercion()
|
|
255
|
+
|
|
256
|
+
def ambient(self):
|
|
257
|
+
"""
|
|
258
|
+
Return the ambient space of ``self``.
|
|
259
|
+
|
|
260
|
+
EXAMPLES::
|
|
261
|
+
|
|
262
|
+
sage: X = CombinatorialFreeModule(QQ, range(3)); x = X.basis()
|
|
263
|
+
sage: Y = X.submodule((x[0]-x[1], x[1]-x[2]))
|
|
264
|
+
sage: Y.ambient() is X
|
|
265
|
+
True
|
|
266
|
+
"""
|
|
267
|
+
return self._ambient
|
|
268
|
+
|
|
269
|
+
@cached_method
|
|
270
|
+
def _support_key(self, x):
|
|
271
|
+
"""
|
|
272
|
+
Return a key corresponding to the index ``x`` for ordering the
|
|
273
|
+
basis of ``self``.
|
|
274
|
+
|
|
275
|
+
EXAMPLES::
|
|
276
|
+
|
|
277
|
+
sage: # needs sage.libs.flint
|
|
278
|
+
sage: A = GradedModulesWithBasis(ZZ).example()
|
|
279
|
+
sage: M = A.submodule(list(A.basis(3)), already_echelonized=True)
|
|
280
|
+
sage: [M._support_key(x) for x in M._support_order]
|
|
281
|
+
[0, 1, 2]
|
|
282
|
+
"""
|
|
283
|
+
return self._support_order.index(x)
|
|
284
|
+
|
|
285
|
+
@lazy_attribute
|
|
286
|
+
def lift(self):
|
|
287
|
+
r"""
|
|
288
|
+
The lift (embedding) map from ``self`` to the ambient space.
|
|
289
|
+
|
|
290
|
+
EXAMPLES::
|
|
291
|
+
|
|
292
|
+
sage: X = CombinatorialFreeModule(QQ, range(3), prefix='x'); x = X.basis()
|
|
293
|
+
sage: Y = X.submodule((x[0]-x[1], x[1]-x[2]), already_echelonized=True); y = Y.basis()
|
|
294
|
+
sage: Y.lift
|
|
295
|
+
Generic morphism:
|
|
296
|
+
From: Free module generated by {0, 1} over Rational Field
|
|
297
|
+
To: Free module generated by {0, 1, 2} over Rational Field
|
|
298
|
+
sage: [ Y.lift(u) for u in y ]
|
|
299
|
+
[x[0] - x[1], x[1] - x[2]]
|
|
300
|
+
sage: (y[0] + y[1]).lift()
|
|
301
|
+
x[0] - x[2]
|
|
302
|
+
"""
|
|
303
|
+
return self.module_morphism(self.lift_on_basis,
|
|
304
|
+
codomain=self._ambient,
|
|
305
|
+
triangular='lower',
|
|
306
|
+
unitriangular=self._unitriangular,
|
|
307
|
+
key=self._support_key,
|
|
308
|
+
inverse_on_support='compute')
|
|
309
|
+
|
|
310
|
+
@lazy_attribute
|
|
311
|
+
def reduce(self):
|
|
312
|
+
r"""
|
|
313
|
+
The reduce map.
|
|
314
|
+
|
|
315
|
+
This map reduces elements of the ambient space modulo this
|
|
316
|
+
submodule.
|
|
317
|
+
|
|
318
|
+
EXAMPLES::
|
|
319
|
+
|
|
320
|
+
sage: X = CombinatorialFreeModule(QQ, range(3), prefix='x'); x = X.basis()
|
|
321
|
+
sage: Y = X.submodule((x[0]-x[1], x[1]-x[2]), already_echelonized=True)
|
|
322
|
+
sage: Y.reduce
|
|
323
|
+
Generic endomorphism of Free module generated by {0, 1, 2} over Rational Field
|
|
324
|
+
sage: Y.reduce(x[1])
|
|
325
|
+
x[2]
|
|
326
|
+
sage: Y.reduce(2*x[0] + x[1])
|
|
327
|
+
3*x[2]
|
|
328
|
+
|
|
329
|
+
TESTS::
|
|
330
|
+
|
|
331
|
+
sage: all( Y.reduce(u.lift()) == 0 for u in Y.basis() )
|
|
332
|
+
True
|
|
333
|
+
"""
|
|
334
|
+
return self.lift.cokernel_projection()
|
|
335
|
+
|
|
336
|
+
@lazy_attribute
|
|
337
|
+
def retract(self):
|
|
338
|
+
r"""
|
|
339
|
+
The retract map from the ambient space.
|
|
340
|
+
|
|
341
|
+
EXAMPLES::
|
|
342
|
+
|
|
343
|
+
sage: X = CombinatorialFreeModule(QQ, range(3), prefix='x'); x = X.basis()
|
|
344
|
+
sage: Y = X.submodule((x[0]-x[1], x[1]-x[2]), already_echelonized=True)
|
|
345
|
+
sage: Y.print_options(prefix='y')
|
|
346
|
+
sage: Y.retract
|
|
347
|
+
Generic morphism:
|
|
348
|
+
From: Free module generated by {0, 1, 2} over Rational Field
|
|
349
|
+
To: Free module generated by {0, 1} over Rational Field
|
|
350
|
+
sage: Y.retract(x[0] - x[2])
|
|
351
|
+
y[0] + y[1]
|
|
352
|
+
|
|
353
|
+
TESTS::
|
|
354
|
+
|
|
355
|
+
sage: all( Y.retract(u.lift()) == u for u in Y.basis() )
|
|
356
|
+
True
|
|
357
|
+
"""
|
|
358
|
+
return self.lift.section()
|
|
359
|
+
|
|
360
|
+
def is_submodule(self, other) -> bool:
|
|
361
|
+
r"""
|
|
362
|
+
Return whether ``self`` is a submodule of ``other``.
|
|
363
|
+
|
|
364
|
+
INPUT:
|
|
365
|
+
|
|
366
|
+
- ``other`` -- another submodule of the same ambient module
|
|
367
|
+
or the ambient module itself
|
|
368
|
+
|
|
369
|
+
EXAMPLES::
|
|
370
|
+
|
|
371
|
+
sage: X = CombinatorialFreeModule(QQ, range(4)); x = X.basis()
|
|
372
|
+
sage: F = X.submodule([x[0]-x[1], x[1]-x[2], x[2]-x[3]])
|
|
373
|
+
sage: G = X.submodule([x[0]-x[2]])
|
|
374
|
+
sage: H = X.submodule([x[0]-x[1], x[2]])
|
|
375
|
+
sage: F.is_submodule(X)
|
|
376
|
+
True
|
|
377
|
+
sage: G.is_submodule(F)
|
|
378
|
+
True
|
|
379
|
+
sage: H.is_submodule(F)
|
|
380
|
+
False
|
|
381
|
+
sage: H.is_submodule(G)
|
|
382
|
+
False
|
|
383
|
+
|
|
384
|
+
Infinite dimensional examples::
|
|
385
|
+
|
|
386
|
+
sage: X = CombinatorialFreeModule(QQ, ZZ); x = X.basis()
|
|
387
|
+
sage: F = X.submodule([x[0]-x[1], x[1]-x[2], x[2]-x[3]])
|
|
388
|
+
sage: G = X.submodule([x[0]-x[2]])
|
|
389
|
+
sage: H = X.submodule([x[0]-x[1]])
|
|
390
|
+
sage: F.is_submodule(X)
|
|
391
|
+
True
|
|
392
|
+
sage: G.is_submodule(F)
|
|
393
|
+
True
|
|
394
|
+
sage: H.is_submodule(F)
|
|
395
|
+
True
|
|
396
|
+
sage: H.is_submodule(G)
|
|
397
|
+
False
|
|
398
|
+
|
|
399
|
+
Different ambient spaces::
|
|
400
|
+
|
|
401
|
+
sage: X = CombinatorialFreeModule(QQ, range(4)); x = X.basis()
|
|
402
|
+
sage: F = X.submodule([x[0]-x[1], x[1]-x[2], x[2]-x[3]])
|
|
403
|
+
sage: Y = CombinatorialFreeModule(QQ, range(6)); y = Y.basis()
|
|
404
|
+
sage: G = Y.submodule([y[0]-y[1], y[1]-y[2], y[2]-y[3]])
|
|
405
|
+
sage: F.is_submodule(G)
|
|
406
|
+
False
|
|
407
|
+
"""
|
|
408
|
+
if other is self._ambient:
|
|
409
|
+
return True
|
|
410
|
+
if not (isinstance(self, SubmoduleWithBasis) and self.ambient() is other.ambient()):
|
|
411
|
+
return False # different ambient spaces
|
|
412
|
+
if self not in ModulesWithBasis.FiniteDimensional:
|
|
413
|
+
raise NotImplementedError("only implemented for finite dimensional submodules")
|
|
414
|
+
if self.dimension() > other.dimension(): # quick dimension check
|
|
415
|
+
return False
|
|
416
|
+
if not set(self._support_order) <= set(other._support_order): # quick support check
|
|
417
|
+
return False
|
|
418
|
+
for b in self.basis():
|
|
419
|
+
try:
|
|
420
|
+
other.retract(b.lift())
|
|
421
|
+
except ValueError:
|
|
422
|
+
return False
|
|
423
|
+
return True
|
|
424
|
+
|
|
425
|
+
def _common_submodules(self, other):
|
|
426
|
+
"""
|
|
427
|
+
Helper method to return a pair of submodules of the same ambient
|
|
428
|
+
free modules to do the corresponding linear algebra.
|
|
429
|
+
|
|
430
|
+
EXAMPLES::
|
|
431
|
+
|
|
432
|
+
sage: X = CombinatorialFreeModule(QQ, range(4)); x = X.basis()
|
|
433
|
+
sage: F = X.submodule([x[0]-x[1], x[1]-3*x[2], x[2]-5*x[3]])
|
|
434
|
+
sage: G = X.submodule([x[0]-x[1], x[1]-2*x[2], x[2]-3*x[3]])
|
|
435
|
+
sage: H = X.submodule([x[0]-x[1], x[1]-2*x[2], x[2]-3*x[3]], support_order=(3,2,1,0))
|
|
436
|
+
sage: F._common_submodules(G)
|
|
437
|
+
(Vector space of degree 4 and dimension 3 over Rational Field
|
|
438
|
+
Basis matrix:
|
|
439
|
+
[ 1 0 0 -15]
|
|
440
|
+
[ 0 1 0 -15]
|
|
441
|
+
[ 0 0 1 -5],
|
|
442
|
+
Vector space of degree 4 and dimension 3 over Rational Field
|
|
443
|
+
Basis matrix:
|
|
444
|
+
[ 1 0 0 -6]
|
|
445
|
+
[ 0 1 0 -6]
|
|
446
|
+
[ 0 0 1 -3])
|
|
447
|
+
sage: H._common_submodules(F)
|
|
448
|
+
(Vector space of degree 4 and dimension 3 over Rational Field
|
|
449
|
+
Basis matrix:
|
|
450
|
+
[ 1 0 0 -1/6]
|
|
451
|
+
[ 0 1 0 -1/2]
|
|
452
|
+
[ 0 0 1 -1],
|
|
453
|
+
Vector space of degree 4 and dimension 3 over Rational Field
|
|
454
|
+
Basis matrix:
|
|
455
|
+
[ 1 0 0 -1/15]
|
|
456
|
+
[ 0 1 0 -1/3]
|
|
457
|
+
[ 0 0 1 -1])
|
|
458
|
+
sage: G._common_submodules(H)
|
|
459
|
+
(Vector space of degree 4 and dimension 3 over Rational Field
|
|
460
|
+
Basis matrix:
|
|
461
|
+
[ 1 0 0 -6]
|
|
462
|
+
[ 0 1 0 -6]
|
|
463
|
+
[ 0 0 1 -3],
|
|
464
|
+
Vector space of degree 4 and dimension 3 over Rational Field
|
|
465
|
+
Basis matrix:
|
|
466
|
+
[ 1 0 0 -6]
|
|
467
|
+
[ 0 1 0 -6]
|
|
468
|
+
[ 0 0 1 -3])
|
|
469
|
+
sage: H._common_submodules(G)
|
|
470
|
+
(Vector space of degree 4 and dimension 3 over Rational Field
|
|
471
|
+
Basis matrix:
|
|
472
|
+
[ 1 0 0 -1/6]
|
|
473
|
+
[ 0 1 0 -1/2]
|
|
474
|
+
[ 0 0 1 -1],
|
|
475
|
+
Vector space of degree 4 and dimension 3 over Rational Field
|
|
476
|
+
Basis matrix:
|
|
477
|
+
[ 1 0 0 -1/6]
|
|
478
|
+
[ 0 1 0 -1/2]
|
|
479
|
+
[ 0 0 1 -1])
|
|
480
|
+
"""
|
|
481
|
+
from sage.modules.free_module import FreeModule
|
|
482
|
+
supp_order = self._support_order
|
|
483
|
+
A = FreeModule(self.base_ring(), len(supp_order))
|
|
484
|
+
U = A.submodule([A([vec[supp] for supp in supp_order]) for vec in self._basis], check=False)
|
|
485
|
+
V = A.submodule([A([vec[supp] for supp in supp_order]) for vec in other._basis], check=False)
|
|
486
|
+
return (U, V)
|
|
487
|
+
|
|
488
|
+
def is_equal_subspace(self, other) -> bool:
|
|
489
|
+
r"""
|
|
490
|
+
Return whether ``self`` is an equal submodule to ``other``.
|
|
491
|
+
|
|
492
|
+
.. NOTE::
|
|
493
|
+
|
|
494
|
+
This is the mathematical notion of equality (as sets that are
|
|
495
|
+
isomorphic as vector spaces), which is weaker than the `==`
|
|
496
|
+
which takes into account things like the support order.
|
|
497
|
+
|
|
498
|
+
INPUT:
|
|
499
|
+
|
|
500
|
+
- ``other`` -- another submodule of the same ambient module
|
|
501
|
+
or the ambient module itself
|
|
502
|
+
|
|
503
|
+
EXAMPLES::
|
|
504
|
+
|
|
505
|
+
sage: R.<z> = LaurentPolynomialRing(QQ)
|
|
506
|
+
sage: X = CombinatorialFreeModule(R, range(4)); x = X.basis()
|
|
507
|
+
sage: F = X.submodule([x[0]-x[1], z*x[1]-z*x[2], z^2*x[2]-z^2*x[3]])
|
|
508
|
+
sage: G = X.submodule([x[0]-x[1], x[1]-x[2], x[2]-x[3]])
|
|
509
|
+
sage: H = X.submodule([x[0]-x[1], x[1]-x[2], x[2]-x[3]], support_order=(3,2,1,0))
|
|
510
|
+
sage: F.is_equal_subspace(F)
|
|
511
|
+
True
|
|
512
|
+
sage: F == G
|
|
513
|
+
False
|
|
514
|
+
sage: F.is_equal_subspace(G)
|
|
515
|
+
True
|
|
516
|
+
sage: F.is_equal_subspace(H)
|
|
517
|
+
True
|
|
518
|
+
sage: G == H # different support orders
|
|
519
|
+
False
|
|
520
|
+
sage: G.is_equal_subspace(H)
|
|
521
|
+
True
|
|
522
|
+
|
|
523
|
+
::
|
|
524
|
+
|
|
525
|
+
sage: X = CombinatorialFreeModule(QQ, ZZ); x = X.basis()
|
|
526
|
+
sage: F = X.submodule([x[0]-x[1], x[1]-x[3]])
|
|
527
|
+
sage: G = X.submodule([x[0]-x[1], x[2]])
|
|
528
|
+
sage: H = X.submodule([x[0]+x[1], x[1]+3*x[2]])
|
|
529
|
+
sage: Hp = X.submodule([x[0]+x[1], x[1]+3*x[2]], prefix='Hp')
|
|
530
|
+
sage: F.is_equal_subspace(X)
|
|
531
|
+
False
|
|
532
|
+
sage: F.is_equal_subspace(G)
|
|
533
|
+
False
|
|
534
|
+
sage: G.is_equal_subspace(H)
|
|
535
|
+
False
|
|
536
|
+
sage: H == Hp
|
|
537
|
+
False
|
|
538
|
+
sage: H.is_equal_subspace(Hp)
|
|
539
|
+
True
|
|
540
|
+
"""
|
|
541
|
+
if self is other: # trivial case
|
|
542
|
+
return True
|
|
543
|
+
if not isinstance(self, SubmoduleWithBasis) and self.ambient() is other.ambient():
|
|
544
|
+
raise ArithmeticError("other (=%s) should be a submodule of the same ambient space" % other)
|
|
545
|
+
if self.dimension() != other.dimension(): # quick dimension check
|
|
546
|
+
return False
|
|
547
|
+
if self not in ModulesWithBasis.FiniteDimensional:
|
|
548
|
+
raise NotImplementedError("only implemented for finite dimensional submodules")
|
|
549
|
+
if set(self._basis) == set(other._basis):
|
|
550
|
+
return True
|
|
551
|
+
if set(self._support_order) != set(other._support_order): # different supports
|
|
552
|
+
return False
|
|
553
|
+
U, V = self._common_submodules(other)
|
|
554
|
+
return U == V
|
|
555
|
+
|
|
556
|
+
def __add__(self, other):
|
|
557
|
+
r"""
|
|
558
|
+
Return the sum of ``self`` and ``other``.
|
|
559
|
+
|
|
560
|
+
EXAMPLES::
|
|
561
|
+
|
|
562
|
+
sage: X = CombinatorialFreeModule(QQ, range(4)); x = X.basis()
|
|
563
|
+
sage: F = X.submodule([x[0]-x[1], x[1]-x[2], x[2]-x[3]])
|
|
564
|
+
sage: G = X.submodule([x[0]-x[2]])
|
|
565
|
+
sage: H = X.submodule([x[0]-x[1], x[2]])
|
|
566
|
+
sage: FG = F + G; FG
|
|
567
|
+
Free module generated by {0, 1, 2} over Rational Field
|
|
568
|
+
sage: [FG.lift(b) for b in FG.basis()]
|
|
569
|
+
[B[0] - B[3], B[1] - B[3], B[2] - B[3]]
|
|
570
|
+
sage: FH = F + H; FH
|
|
571
|
+
Free module generated by {0, 1, 2, 3} over Rational Field
|
|
572
|
+
sage: [FH.lift(b) for b in FH.basis()]
|
|
573
|
+
[B[0], B[1], B[2], B[3]]
|
|
574
|
+
sage: GH = G + H; GH
|
|
575
|
+
Free module generated by {0, 1, 2} over Rational Field
|
|
576
|
+
sage: [GH.lift(b) for b in GH.basis()]
|
|
577
|
+
[B[0], B[1], B[2]]
|
|
578
|
+
|
|
579
|
+
TESTS::
|
|
580
|
+
|
|
581
|
+
sage: X = CombinatorialFreeModule(QQ, range(4)); x = X.basis()
|
|
582
|
+
sage: F = X.submodule([x[0]-x[1], x[1]-x[2], x[2]-x[3]])
|
|
583
|
+
sage: Y = CombinatorialFreeModule(QQ, range(5)); y = Y.basis()
|
|
584
|
+
sage: U = Y.submodule([y[0]-y[2]+y[3]])
|
|
585
|
+
sage: F + U
|
|
586
|
+
Traceback (most recent call last):
|
|
587
|
+
...
|
|
588
|
+
ArithmeticError: both subspaces must have the same ambient space
|
|
589
|
+
sage: F + 3
|
|
590
|
+
Traceback (most recent call last):
|
|
591
|
+
...
|
|
592
|
+
TypeError: both objects must be submodules
|
|
593
|
+
"""
|
|
594
|
+
if not isinstance(other, SubmoduleWithBasis):
|
|
595
|
+
raise TypeError("both objects must be submodules")
|
|
596
|
+
if other.ambient() != self.ambient():
|
|
597
|
+
raise ArithmeticError("both subspaces must have the same ambient space")
|
|
598
|
+
return self.ambient().submodule(set(list(self._basis) + list(other._basis)), check=False)
|
|
599
|
+
|
|
600
|
+
subspace_sum = __add__
|
|
601
|
+
|
|
602
|
+
def __and__(self, other):
|
|
603
|
+
r"""
|
|
604
|
+
Return the intersection of ``self`` and ``other``.
|
|
605
|
+
|
|
606
|
+
EXAMPLES::
|
|
607
|
+
|
|
608
|
+
sage: X = CombinatorialFreeModule(QQ, range(4)); x = X.basis()
|
|
609
|
+
sage: F = X.submodule([x[0]-x[1], x[1]-x[2], x[2]-x[3]])
|
|
610
|
+
sage: G = X.submodule([x[0]-x[2]])
|
|
611
|
+
sage: H = X.submodule([x[0]-x[1], x[2]])
|
|
612
|
+
sage: FG = F & G; FG
|
|
613
|
+
Free module generated by {0} over Rational Field
|
|
614
|
+
sage: [FG.lift(b) for b in FG.basis()]
|
|
615
|
+
[B[0] - B[2]]
|
|
616
|
+
sage: FH = F & H; FH
|
|
617
|
+
Free module generated by {0} over Rational Field
|
|
618
|
+
sage: [FH.lift(b) for b in FH.basis()]
|
|
619
|
+
[B[0] - B[1]]
|
|
620
|
+
sage: GH = G & H; GH
|
|
621
|
+
Free module generated by {} over Rational Field
|
|
622
|
+
sage: [GH.lift(b) for b in GH.basis()]
|
|
623
|
+
[]
|
|
624
|
+
|
|
625
|
+
sage: F.intersection(X) is F
|
|
626
|
+
True
|
|
627
|
+
|
|
628
|
+
TESTS::
|
|
629
|
+
|
|
630
|
+
sage: X = CombinatorialFreeModule(QQ, range(4)); x = X.basis()
|
|
631
|
+
sage: F = X.submodule([x[0]-x[1], x[1]-x[2], x[2]-x[3]])
|
|
632
|
+
sage: Y = CombinatorialFreeModule(QQ, range(5)); y = Y.basis()
|
|
633
|
+
sage: U = Y.submodule([y[0]-y[2]+y[3]])
|
|
634
|
+
sage: F & U
|
|
635
|
+
Traceback (most recent call last):
|
|
636
|
+
...
|
|
637
|
+
ArithmeticError: both subspaces must have the same ambient space
|
|
638
|
+
sage: F & 3
|
|
639
|
+
Traceback (most recent call last):
|
|
640
|
+
...
|
|
641
|
+
TypeError: both objects must be submodules
|
|
642
|
+
"""
|
|
643
|
+
if other is self._ambient:
|
|
644
|
+
return self
|
|
645
|
+
if not isinstance(other, SubmoduleWithBasis):
|
|
646
|
+
raise TypeError("both objects must be submodules")
|
|
647
|
+
if other.ambient() != self.ambient():
|
|
648
|
+
raise ArithmeticError("both subspaces must have the same ambient space")
|
|
649
|
+
U, V = self._common_submodules(other)
|
|
650
|
+
UV = U & V # the intersection
|
|
651
|
+
A = self._ambient
|
|
652
|
+
supp = self._support_order
|
|
653
|
+
return A.submodule([A.element_class(A, {supp[i]: c for i, c in vec.iteritems()})
|
|
654
|
+
for vec in UV.basis()])
|
|
655
|
+
|
|
656
|
+
intersection = __and__
|
|
657
|
+
__rand__ = __and__
|
|
658
|
+
|
|
659
|
+
def subspace(self, gens, *args, **opts):
|
|
660
|
+
r"""
|
|
661
|
+
The submodule of the ambient space spanned by a finite set
|
|
662
|
+
of generators ``gens`` (as a submodule).
|
|
663
|
+
|
|
664
|
+
INPUT:
|
|
665
|
+
|
|
666
|
+
- ``gens`` -- list or family of elements of ``self``
|
|
667
|
+
|
|
668
|
+
For additional optional arguments, see
|
|
669
|
+
:meth:`ModulesWithBasis.ParentMethods.submodule`.
|
|
670
|
+
|
|
671
|
+
EXAMPLES::
|
|
672
|
+
|
|
673
|
+
sage: X = CombinatorialFreeModule(QQ, range(4), prefix='X'); x = X.basis()
|
|
674
|
+
sage: F = X.submodule([x[0]-x[1], x[1]-x[2], x[2]-x[3]], prefix='F'); f = F.basis()
|
|
675
|
+
sage: U = F.submodule([f[0] + 2*f[1] - 5*f[2], f[1] + 2*f[2]]); U
|
|
676
|
+
Free module generated by {0, 1} over Rational Field
|
|
677
|
+
sage: [U.lift(u) for u in U.basis()]
|
|
678
|
+
[F[0] - 9*F[2], F[1] + 2*F[2]]
|
|
679
|
+
sage: V = F.subspace([f[0] + 2*f[1] - 5*f[2], f[1] + 2*f[2]]); V
|
|
680
|
+
Free module generated by {0, 1} over Rational Field
|
|
681
|
+
sage: [V.lift(u) for u in V.basis()]
|
|
682
|
+
[X[0] - 9*X[2] + 8*X[3], X[1] + 2*X[2] - 3*X[3]]
|
|
683
|
+
"""
|
|
684
|
+
gens = [self._ambient(g) for g in gens]
|
|
685
|
+
return self._ambient.submodule(gens, *args, **opts)
|
|
Binary file
|