passagemath-modules 10.5.32__cp310-cp310-macosx_14_0_arm64.whl → 10.6.20__cp310-cp310-macosx_14_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.5.32.dist-info → passagemath_modules-10.6.20.dist-info}/METADATA +51 -46
- {passagemath_modules-10.5.32.dist-info → passagemath_modules-10.6.20.dist-info}/RECORD +333 -323
- {passagemath_modules-10.5.32.dist-info → passagemath_modules-10.6.20.dist-info}/WHEEL +1 -1
- passagemath_modules.dylibs/libgcc_s.1.1.dylib +0 -0
- passagemath_modules.dylibs/libgfortran.5.dylib +0 -0
- passagemath_modules.dylibs/libgsl.28.dylib +0 -0
- passagemath_modules.dylibs/libmpc.3.dylib +0 -0
- passagemath_modules.dylibs/libopenblasp-r0.3.29.dylib +0 -0
- passagemath_modules.dylibs/libquadmath.0.dylib +0 -0
- sage/algebras/clifford_algebra.py +2 -2
- sage/algebras/clifford_algebra_element.cpython-310-darwin.so +0 -0
- sage/algebras/clifford_algebra_element.pyx +4 -2
- sage/algebras/exterior_algebra_groebner.cpython-310-darwin.so +0 -0
- sage/algebras/exterior_algebra_groebner.pyx +2 -0
- sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra.py +83 -5
- sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.cpython-310-darwin.so +0 -0
- sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pxd +2 -0
- sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pyx +28 -3
- sage/algebras/finite_gca.py +1 -1
- sage/algebras/lie_algebras/bgg_dual_module.py +18 -11
- sage/algebras/lie_algebras/classical_lie_algebra.py +3 -3
- sage/algebras/lie_algebras/examples.py +2 -2
- sage/algebras/lie_algebras/free_lie_algebra.py +1 -1
- sage/algebras/lie_algebras/heisenberg.py +4 -4
- sage/algebras/lie_algebras/lie_algebra.py +1 -1
- sage/algebras/lie_algebras/lie_algebra_element.cpython-310-darwin.so +0 -0
- sage/algebras/lie_algebras/lie_algebra_element.pyx +65 -28
- sage/algebras/lie_algebras/quotient.py +40 -29
- sage/algebras/lie_algebras/subalgebra.py +76 -53
- sage/algebras/lie_algebras/verma_module.py +1 -3
- sage/algebras/octonion_algebra.cpython-310-darwin.so +0 -0
- sage/algebras/octonion_algebra.pyx +1 -1
- sage/algebras/orlik_solomon.py +4 -4
- sage/algebras/orlik_terao.py +4 -4
- sage/algebras/steenrod/steenrod_algebra.py +37 -30
- sage/algebras/steenrod/steenrod_algebra_bases.py +2 -2
- sage/algebras/steenrod/steenrod_algebra_misc.py +4 -4
- sage/algebras/steenrod/steenrod_algebra_mult.py +2 -2
- sage/all__sagemath_modules.py +1 -0
- sage/calculus/integration.cpython-310-darwin.so +0 -0
- sage/calculus/integration.pyx +6 -5
- sage/calculus/interpolation.cpython-310-darwin.so +0 -0
- sage/calculus/interpolators.cpython-310-darwin.so +0 -0
- sage/calculus/ode.cpython-310-darwin.so +0 -0
- sage/calculus/ode.pxd +2 -2
- sage/calculus/ode.pyx +6 -4
- sage/calculus/riemann.cpython-310-darwin.so +0 -0
- sage/calculus/riemann.pyx +68 -48
- sage/calculus/transforms/dwt.cpython-310-darwin.so +0 -0
- sage/calculus/transforms/fft.cpython-310-darwin.so +0 -0
- sage/coding/ag_code_decoders.cpython-310-darwin.so +0 -0
- sage/coding/ag_code_decoders.pyx +31 -31
- sage/coding/binary_code.cpython-310-darwin.so +0 -0
- sage/coding/binary_code.pxd +6 -6
- sage/coding/binary_code.pyx +212 -173
- sage/coding/guruswami_sudan/utils.py +3 -5
- sage/coding/kasami_codes.cpython-310-darwin.so +0 -0
- sage/coding/kasami_codes.pyx +20 -24
- sage/coding/linear_code.py +2 -2
- sage/coding/linear_code_no_metric.py +5 -5
- sage/coding/linear_rank_metric.py +81 -19
- sage/combinat/cartesian_product.py +1 -1
- sage/combinat/free_module.py +22 -2
- sage/combinat/root_system/all.py +1 -1
- sage/combinat/root_system/ambient_space.py +1 -1
- sage/combinat/root_system/associahedron.py +4 -4
- sage/combinat/root_system/braid_move_calculator.py +2 -2
- sage/combinat/root_system/braid_orbit.cpython-310-darwin.so +0 -0
- sage/combinat/root_system/braid_orbit.pyx +1 -1
- sage/combinat/root_system/branching_rules.py +3 -3
- sage/combinat/root_system/cartan_type.py +14 -14
- sage/combinat/root_system/coxeter_group.py +3 -3
- sage/combinat/root_system/coxeter_matrix.py +1 -1
- sage/combinat/root_system/coxeter_type.py +12 -1
- sage/combinat/root_system/extended_affine_weyl_group.py +9 -9
- sage/combinat/root_system/fundamental_group.py +3 -5
- sage/combinat/root_system/hecke_algebra_representation.py +1 -1
- sage/combinat/root_system/integrable_representations.py +1 -1
- sage/combinat/root_system/pieri_factors.py +3 -3
- sage/combinat/root_system/root_lattice_realization_algebras.py +1 -1
- sage/combinat/root_system/root_lattice_realizations.py +1 -1
- sage/combinat/root_system/type_folded.py +3 -3
- sage/combinat/root_system/type_reducible.py +8 -7
- sage/combinat/root_system/type_super_A.py +2 -2
- sage/combinat/root_system/weight_lattice_realizations.py +9 -8
- sage/combinat/root_system/weyl_characters.py +2 -2
- sage/crypto/__init__.py +1 -0
- sage/crypto/block_cipher/des.py +1 -1
- sage/crypto/block_cipher/miniaes.py +3 -3
- sage/crypto/block_cipher/present.py +3 -3
- sage/crypto/block_cipher/sdes.py +3 -3
- sage/crypto/boolean_function.cpython-310-darwin.so +0 -0
- sage/crypto/boolean_function.pyx +22 -23
- sage/crypto/key_exchange/diffie_hellman.py +4 -9
- sage/crypto/mq/sr.py +1 -1
- sage/crypto/public_key/blum_goldwasser.py +3 -3
- sage/crypto/sbox.cpython-310-darwin.so +0 -0
- sage/crypto/sbox.pyx +1 -1
- sage/crypto/sboxes.py +22 -0
- sage/crypto/util.py +4 -6
- sage/ext/interpreters/__init__.py +1 -1
- sage/ext/interpreters/all__sagemath_modules.py +1 -1
- sage/ext/interpreters/wrapper_cc.cpython-310-darwin.so +0 -0
- sage/ext/interpreters/wrapper_cc.pxd +5 -5
- sage/ext/interpreters/wrapper_cc.pyx +1 -1
- sage/ext/interpreters/wrapper_cdf.cpython-310-darwin.so +0 -0
- sage/ext/interpreters/wrapper_cdf.pxd +5 -7
- sage/ext/interpreters/wrapper_cdf.pyx +4 -10
- sage/ext/interpreters/wrapper_rdf.cpython-310-darwin.so +0 -0
- sage/ext/interpreters/wrapper_rdf.pxd +1 -1
- sage/ext/interpreters/wrapper_rdf.pyx +1 -1
- sage/ext/interpreters/wrapper_rr.cpython-310-darwin.so +0 -0
- sage/ext/interpreters/wrapper_rr.pxd +5 -5
- sage/ext/interpreters/wrapper_rr.pyx +1 -2
- sage/geometry/toric_lattice.py +3 -3
- sage/geometry/toric_lattice_element.cpython-310-darwin.so +0 -0
- sage/groups/additive_abelian/additive_abelian_group.py +1 -1
- sage/groups/additive_abelian/qmodnz.py +4 -4
- sage/groups/matrix_gps/coxeter_group.py +17 -4
- sage/groups/matrix_gps/group_element.cpython-310-darwin.so +0 -0
- sage/groups/misc_gps/argument_groups.py +2 -2
- sage/groups/misc_gps/imaginary_groups.py +4 -4
- sage/groups/perm_gps/partn_ref/refinement_binary.cpython-310-darwin.so +0 -0
- sage/groups/perm_gps/partn_ref/refinement_matrices.cpython-310-darwin.so +0 -0
- sage/homology/chain_complex.py +0 -2
- sage/homology/hochschild_complex.py +3 -3
- sage/homology/homology_morphism.py +6 -6
- sage/homology/homology_vector_space_with_basis.py +1 -1
- sage/libs/gsl/array.cpython-310-darwin.so +0 -0
- sage/libs/mpmath/utils.cpython-310-darwin.so +0 -0
- sage/matrix/action.cpython-310-darwin.so +0 -0
- sage/matrix/args.cpython-310-darwin.so +0 -0
- sage/matrix/args.pyx +25 -10
- sage/matrix/benchmark.py +8 -4
- sage/matrix/compute_J_ideal.py +2 -2
- sage/matrix/constructor.cpython-310-darwin.so +0 -0
- sage/matrix/echelon_matrix.cpython-310-darwin.so +0 -0
- sage/matrix/echelon_matrix.pyx +1 -1
- sage/matrix/matrix0.cpython-310-darwin.so +0 -0
- sage/matrix/matrix0.pxd +3 -3
- sage/matrix/matrix0.pyx +7 -5
- sage/matrix/matrix1.cpython-310-darwin.so +0 -0
- sage/matrix/matrix1.pyx +87 -48
- sage/matrix/matrix2.cpython-310-darwin.so +0 -0
- sage/matrix/matrix2.pxd +3 -3
- sage/matrix/matrix2.pyx +1261 -63
- sage/matrix/matrix_cdv.cpython-310-darwin.so +0 -0
- sage/matrix/matrix_complex_double_dense.cpython-310-darwin.so +0 -0
- sage/matrix/matrix_complex_double_dense.pyx +1 -1
- sage/matrix/matrix_dense.cpython-310-darwin.so +0 -0
- sage/matrix/matrix_dense.pyx +2 -3
- sage/matrix/matrix_double_dense.cpython-310-darwin.so +0 -0
- sage/matrix/matrix_double_dense.pyx +11 -5
- sage/matrix/matrix_double_sparse.cpython-310-darwin.so +0 -0
- sage/matrix/matrix_generic_dense.cpython-310-darwin.so +0 -0
- sage/matrix/matrix_generic_sparse.cpython-310-darwin.so +0 -0
- sage/matrix/matrix_generic_sparse.pyx +1 -1
- sage/matrix/matrix_laurent_mpolynomial_dense.cpython-310-darwin.so +0 -0
- sage/matrix/matrix_numpy_dense.cpython-310-darwin.so +0 -0
- sage/matrix/matrix_numpy_integer_dense.cpython-310-darwin.so +0 -0
- sage/matrix/matrix_polynomial_dense.cpython-310-darwin.so +0 -0
- sage/matrix/matrix_polynomial_dense.pyx +952 -261
- sage/matrix/matrix_real_double_dense.cpython-310-darwin.so +0 -0
- sage/matrix/matrix_sparse.cpython-310-darwin.so +0 -0
- sage/matrix/matrix_sparse.pyx +6 -7
- sage/matrix/matrix_window.cpython-310-darwin.so +0 -0
- sage/matrix/matrix_window.pyx +2 -2
- sage/matrix/misc_mpfr.cpython-310-darwin.so +0 -0
- sage/matrix/operation_table.py +0 -2
- sage/matrix/special.py +5 -1
- sage/matrix/strassen.cpython-310-darwin.so +0 -0
- sage/matrix/strassen.pyx +1 -1
- sage/matroids/basis_exchange_matroid.cpython-310-darwin.so +0 -0
- sage/matroids/basis_matroid.cpython-310-darwin.so +0 -0
- sage/matroids/chow_ring.py +68 -65
- sage/matroids/chow_ring_ideal.py +41 -38
- sage/matroids/circuit_closures_matroid.cpython-310-darwin.so +0 -0
- sage/matroids/circuits_matroid.cpython-310-darwin.so +0 -0
- sage/matroids/database_matroids.py +16 -5
- sage/matroids/dual_matroid.py +2 -2
- sage/matroids/extension.cpython-310-darwin.so +0 -0
- sage/matroids/flats_matroid.cpython-310-darwin.so +0 -0
- sage/matroids/gammoid.py +1 -1
- sage/matroids/graphic_matroid.cpython-310-darwin.so +0 -0
- sage/matroids/graphic_matroid.pyx +3 -3
- sage/matroids/lean_matrix.cpython-310-darwin.so +0 -0
- sage/matroids/lean_matrix.pyx +22 -22
- sage/matroids/linear_matroid.cpython-310-darwin.so +0 -0
- sage/matroids/linear_matroid.pyx +13 -13
- sage/matroids/matroid.cpython-310-darwin.so +0 -0
- sage/matroids/matroid.pyx +15 -15
- sage/matroids/matroids_plot_helpers.py +48 -46
- sage/matroids/minor_matroid.py +2 -2
- sage/matroids/set_system.cpython-310-darwin.so +0 -0
- sage/matroids/transversal_matroid.cpython-310-darwin.so +0 -0
- sage/matroids/transversal_matroid.pyx +3 -3
- sage/matroids/union_matroid.cpython-310-darwin.so +0 -0
- sage/matroids/union_matroid.pyx +3 -0
- sage/matroids/unpickling.cpython-310-darwin.so +0 -0
- sage/matroids/utilities.py +2 -2
- sage/misc/c3.cpython-310-darwin.so +0 -0
- sage/misc/compat.py +1 -2
- sage/misc/pickle_old.cpython-310-darwin.so +0 -0
- sage/modules/diamond_cutting.py +117 -30
- sage/modules/fg_pid/fgp_module.py +3 -3
- sage/modules/filtered_vector_space.py +4 -4
- sage/modules/finite_submodule_iter.cpython-310-darwin.so +0 -0
- sage/modules/fp_graded/free_module.py +2 -2
- sage/modules/fp_graded/module.py +2 -2
- sage/modules/fp_graded/morphism.py +4 -4
- sage/modules/fp_graded/steenrod/morphism.py +1 -1
- sage/modules/free_module.py +162 -26
- sage/modules/free_module_element.cpython-310-darwin.so +0 -0
- sage/modules/free_module_element.pyx +4 -4
- sage/modules/free_module_integer.py +2 -2
- sage/modules/free_module_morphism.py +3 -3
- sage/modules/free_module_pseudohomspace.py +352 -0
- sage/modules/free_module_pseudomorphism.py +578 -0
- sage/modules/free_quadratic_module_integer_symmetric.py +24 -13
- sage/modules/matrix_morphism.py +9 -9
- sage/modules/multi_filtered_vector_space.py +4 -4
- 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 +11 -1
- sage/modules/submodule.py +1 -1
- sage/modules/torsion_quadratic_module.py +1 -1
- sage/modules/vector_complex_double_dense.cpython-310-darwin.so +0 -0
- sage/modules/vector_double_dense.cpython-310-darwin.so +0 -0
- sage/modules/vector_integer_dense.cpython-310-darwin.so +0 -0
- sage/modules/vector_integer_sparse.cpython-310-darwin.so +0 -0
- sage/modules/vector_integer_sparse.pyx +4 -4
- sage/modules/vector_modn_dense.cpython-310-darwin.so +0 -0
- sage/modules/vector_modn_sparse.cpython-310-darwin.so +0 -0
- sage/modules/vector_numpy_dense.cpython-310-darwin.so +0 -0
- sage/modules/vector_numpy_integer_dense.cpython-310-darwin.so +0 -0
- sage/modules/vector_rational_dense.cpython-310-darwin.so +0 -0
- sage/modules/vector_rational_dense.pyx +1 -1
- sage/modules/vector_rational_sparse.cpython-310-darwin.so +0 -0
- sage/modules/vector_rational_sparse.pyx +5 -5
- sage/modules/vector_real_double_dense.cpython-310-darwin.so +0 -0
- sage/modules/vector_space_morphism.py +2 -2
- sage/modules/with_basis/cell_module.py +17 -0
- sage/modules/with_basis/indexed_element.cpython-310-darwin.so +0 -0
- sage/modules/with_basis/indexed_element.pyx +1 -1
- sage/modules/with_basis/invariant.py +1 -1
- sage/modules/with_basis/representation.py +0 -1
- sage/modules/with_basis/subquotient.py +2 -2
- sage/numerical/gauss_legendre.cpython-310-darwin.so +0 -0
- sage/probability/probability_distribution.cpython-310-darwin.so +0 -0
- sage/quadratic_forms/binary_qf.py +11 -11
- sage/quadratic_forms/bqf_class_group.py +26 -92
- sage/quadratic_forms/count_local_2.cpython-310-darwin.so +0 -0
- sage/quadratic_forms/extras.py +1 -1
- sage/quadratic_forms/quadratic_form.py +5 -4
- sage/quadratic_forms/quadratic_form__equivalence_testing.py +7 -4
- sage/quadratic_forms/quadratic_form__evaluate.cpython-310-darwin.so +0 -0
- sage/quadratic_forms/quadratic_form__local_field_invariants.py +10 -10
- sage/quadratic_forms/quadratic_form__ternary_Tornaria.py +2 -2
- sage/quadratic_forms/ternary.cpython-310-darwin.so +0 -0
- sage/quadratic_forms/ternary_qf.py +50 -83
- sage/rings/cfinite_sequence.py +16 -17
- sage/rings/complex_conversion.cpython-310-darwin.so +0 -0
- sage/rings/complex_double.cpython-310-darwin.so +0 -0
- sage/rings/complex_double.pxd +1 -0
- sage/rings/complex_double.pyx +37 -32
- sage/rings/complex_mpc.cpython-310-darwin.so +0 -0
- sage/rings/complex_mpc.pyx +27 -23
- sage/rings/complex_mpfr.cpython-310-darwin.so +0 -0
- sage/rings/complex_mpfr.pyx +11 -11
- sage/rings/function_field/drinfeld_modules/charzero_drinfeld_module.py +277 -21
- sage/rings/function_field/drinfeld_modules/drinfeld_module.py +10 -1
- sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py +1 -1
- sage/rings/function_field/drinfeld_modules/homset.py +1 -2
- sage/rings/function_field/drinfeld_modules/morphism.py +2 -2
- sage/rings/function_field/hermite_form_polynomial.cpython-310-darwin.so +0 -0
- sage/rings/function_field/khuri_makdisi.cpython-310-darwin.so +0 -0
- sage/rings/function_field/khuri_makdisi.pyx +27 -25
- sage/rings/invariants/invariant_theory.py +61 -60
- sage/rings/invariants/reconstruction.py +8 -8
- sage/rings/polynomial/laurent_polynomial_mpair.cpython-310-darwin.so +0 -0
- sage/rings/polynomial/ore_function_element.py +1 -1
- sage/rings/polynomial/ore_polynomial_element.cpython-310-darwin.so +0 -0
- sage/rings/polynomial/ore_polynomial_element.pyx +8 -8
- sage/rings/polynomial/ore_polynomial_ring.py +134 -17
- sage/rings/polynomial/polynomial_real_mpfr_dense.cpython-310-darwin.so +0 -0
- sage/rings/polynomial/skew_polynomial_element.cpython-310-darwin.so +0 -0
- sage/rings/polynomial/skew_polynomial_finite_field.cpython-310-darwin.so +0 -0
- sage/rings/polynomial/skew_polynomial_finite_field.pyx +3 -4
- sage/rings/polynomial/skew_polynomial_finite_order.cpython-310-darwin.so +0 -0
- sage/rings/polynomial/skew_polynomial_finite_order.pyx +2 -5
- sage/rings/real_double_element_gsl.cpython-310-darwin.so +0 -0
- sage/rings/real_mpfr.cpython-310-darwin.so +0 -0
- sage/rings/real_mpfr.pyx +25 -7
- sage/rings/ring_extension.cpython-310-darwin.so +0 -0
- sage/rings/ring_extension.pyx +4 -2
- sage/rings/ring_extension_conversion.cpython-310-darwin.so +0 -0
- sage/rings/ring_extension_element.cpython-310-darwin.so +0 -0
- sage/rings/ring_extension_element.pyx +42 -0
- sage/rings/ring_extension_morphism.cpython-310-darwin.so +0 -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/basic_stats.py +17 -15
- sage/stats/distributions/dgs_misc.h +11 -4
- sage/stats/distributions/discrete_gaussian_integer.cpython-310-darwin.so +0 -0
- sage/stats/distributions/discrete_gaussian_integer.pyx +9 -7
- sage/stats/hmm/chmm.cpython-310-darwin.so +0 -0
- sage/stats/hmm/chmm.pyx +13 -13
- sage/stats/hmm/distributions.cpython-310-darwin.so +0 -0
- sage/stats/hmm/distributions.pxd +3 -3
- sage/stats/hmm/distributions.pyx +3 -3
- sage/stats/hmm/hmm.cpython-310-darwin.so +0 -0
- sage/stats/hmm/hmm.pxd +3 -3
- sage/stats/hmm/hmm.pyx +6 -6
- sage/stats/hmm/util.cpython-310-darwin.so +0 -0
- sage/stats/hmm/util.pyx +6 -6
- sage/stats/intlist.cpython-310-darwin.so +0 -0
- sage/stats/intlist.pxd +3 -3
- sage/stats/time_series.cpython-310-darwin.so +0 -0
- sage/tensor/modules/alternating_contr_tensor.py +3 -3
- sage/tensor/modules/comp.py +3 -3
- sage/tensor/modules/ext_pow_free_module.py +3 -3
- sage/tensor/modules/format_utilities.py +3 -3
- sage/tensor/modules/free_module_linear_group.py +3 -3
- sage/tensor/modules/free_module_morphism.py +0 -1
- sage/tensor/modules/tensor_free_module.py +3 -3
- sage/tensor/modules/tensor_free_submodule.py +1 -1
- sage/tensor/modules/tensor_free_submodule_basis.py +1 -1
- sage/tensor/modules/tensor_with_indices.py +5 -5
- passagemath_modules.dylibs/libopenblas_armv8p-r0.3.28.dylib +0 -0
- {passagemath_modules-10.5.32.dist-info → passagemath_modules-10.6.20.dist-info}/top_level.txt +0 -0
sage/modules/free_module.py
CHANGED
|
@@ -985,7 +985,7 @@ class Module_free_ambient(Module):
|
|
|
985
985
|
"""
|
|
986
986
|
return self.__degree
|
|
987
987
|
|
|
988
|
-
def is_sparse(self):
|
|
988
|
+
def is_sparse(self) -> bool:
|
|
989
989
|
"""
|
|
990
990
|
Return ``True`` if the underlying representation of this module uses
|
|
991
991
|
sparse vectors, and ``False`` otherwise.
|
|
@@ -999,7 +999,7 @@ class Module_free_ambient(Module):
|
|
|
999
999
|
"""
|
|
1000
1000
|
return self.__is_sparse
|
|
1001
1001
|
|
|
1002
|
-
def is_exact(self):
|
|
1002
|
+
def is_exact(self) -> bool:
|
|
1003
1003
|
"""
|
|
1004
1004
|
Test whether elements of this module are represented exactly.
|
|
1005
1005
|
|
|
@@ -1518,7 +1518,7 @@ class Module_free_ambient(Module):
|
|
|
1518
1518
|
# in the same ambient space
|
|
1519
1519
|
return self.is_submodule(other) and other.is_submodule(self)
|
|
1520
1520
|
|
|
1521
|
-
def is_submodule(self, other):
|
|
1521
|
+
def is_submodule(self, other) -> bool:
|
|
1522
1522
|
r"""
|
|
1523
1523
|
Return ``True`` if ``self`` is a submodule of ``other``.
|
|
1524
1524
|
|
|
@@ -2092,6 +2092,7 @@ class FreeModule_generic(Module_free_ambient):
|
|
|
2092
2092
|
|
|
2093
2093
|
Next we create a subspace::
|
|
2094
2094
|
|
|
2095
|
+
sage: # needs sage.libs.pari
|
|
2095
2096
|
sage: M = FreeModule(QQ, 3, sparse=True)
|
|
2096
2097
|
sage: V = M.span([ [1,2,3] ] ); V
|
|
2097
2098
|
Sparse vector space of degree 3 and dimension 1 over Rational Field
|
|
@@ -2149,6 +2150,7 @@ class FreeModule_generic(Module_free_ambient):
|
|
|
2149
2150
|
|
|
2150
2151
|
Next we convert a subspace::
|
|
2151
2152
|
|
|
2153
|
+
sage: # needs sage.libs.pari
|
|
2152
2154
|
sage: M = FreeModule(QQ,3)
|
|
2153
2155
|
sage: V = M.span([ [1,2,3] ] ); V
|
|
2154
2156
|
Vector space of degree 3 and dimension 1 over Rational Field
|
|
@@ -2305,7 +2307,7 @@ class FreeModule_generic(Module_free_ambient):
|
|
|
2305
2307
|
return self.echelonized_basis_matrix() == other.echelonized_basis_matrix()
|
|
2306
2308
|
return self.is_submodule(other) and other.is_submodule(self)
|
|
2307
2309
|
|
|
2308
|
-
def is_submodule(self, other):
|
|
2310
|
+
def is_submodule(self, other) -> bool:
|
|
2309
2311
|
r"""
|
|
2310
2312
|
Return ``True`` if ``self`` is a submodule of ``other``.
|
|
2311
2313
|
|
|
@@ -3115,6 +3117,135 @@ class FreeModule_generic(Module_free_ambient):
|
|
|
3115
3117
|
codomain = R**n
|
|
3116
3118
|
return super().hom(im_gens, codomain, **kwds)
|
|
3117
3119
|
|
|
3120
|
+
def pseudoHom(self, twist, codomain=None):
|
|
3121
|
+
r"""
|
|
3122
|
+
Return the pseudo-Hom space corresponding to given data.
|
|
3123
|
+
|
|
3124
|
+
INPUT:
|
|
3125
|
+
|
|
3126
|
+
- ``twist`` -- the twisting morphism or the twisting derivation
|
|
3127
|
+
|
|
3128
|
+
- ``codomain`` -- (default: ``None``) the codomain of the pseudo
|
|
3129
|
+
morphisms; if ``None``, the codomain is the same as the domain
|
|
3130
|
+
|
|
3131
|
+
EXAMPLES::
|
|
3132
|
+
|
|
3133
|
+
sage: # needs sage.rings.finite_rings
|
|
3134
|
+
sage: F = GF(25)
|
|
3135
|
+
sage: Frob = F.frobenius_endomorphism()
|
|
3136
|
+
sage: M = F^2
|
|
3137
|
+
sage: M.pseudoHom(Frob)
|
|
3138
|
+
Set of Pseudoendomorphisms (twisted by z2 |--> z2^5) of Vector space of dimension 2 over Finite Field in z2 of size 5^2
|
|
3139
|
+
|
|
3140
|
+
.. SEEALSO::
|
|
3141
|
+
|
|
3142
|
+
:meth:`pseudohom`
|
|
3143
|
+
"""
|
|
3144
|
+
from sage.modules.free_module_pseudohomspace import FreeModulePseudoHomspace
|
|
3145
|
+
if codomain is None:
|
|
3146
|
+
codomain = self
|
|
3147
|
+
return FreeModulePseudoHomspace(self, codomain, twist)
|
|
3148
|
+
|
|
3149
|
+
def pseudohom(self, f, twist, codomain=None, side="left"):
|
|
3150
|
+
r"""
|
|
3151
|
+
Return the pseudohomomorphism corresponding to the given data.
|
|
3152
|
+
|
|
3153
|
+
We recall that, given two `R`-modules `M` and `M'` together with
|
|
3154
|
+
a ring homomorphism `\theta: R \to R` and a `\theta`-derivation,
|
|
3155
|
+
`\delta: R \to R` (that is, a map such that
|
|
3156
|
+
`\delta(xy) = \theta(x)\delta(y) + \delta(x)y`), a
|
|
3157
|
+
pseudomorphism `f : M \to M'` is an additive map such that
|
|
3158
|
+
|
|
3159
|
+
.. MATH::
|
|
3160
|
+
|
|
3161
|
+
f(\lambda x) = \theta(\lambda) f(x) + \delta(\lambda) x
|
|
3162
|
+
|
|
3163
|
+
When `\delta` is nonzero, this requires that `M` coerces into `M'`.
|
|
3164
|
+
|
|
3165
|
+
.. NOTE::
|
|
3166
|
+
|
|
3167
|
+
Internally, pseudomorphisms are represented by matrices with
|
|
3168
|
+
coefficient in the base ring `R`. See class
|
|
3169
|
+
:class:`sage.modules.free_module_pseudomorphism.FreeModulePseudoMorphism`
|
|
3170
|
+
for details.
|
|
3171
|
+
|
|
3172
|
+
INPUT:
|
|
3173
|
+
|
|
3174
|
+
- ``f`` -- a matrix (or any other data) defining the
|
|
3175
|
+
pseudomorphism
|
|
3176
|
+
|
|
3177
|
+
- ``twist`` -- the twisting morphism or the twisting derivation
|
|
3178
|
+
(if a derivation is given, the corresponding morphism `\theta`
|
|
3179
|
+
is automatically infered;
|
|
3180
|
+
see also :class:`sage.rings.polynomial.ore_polynomial_ring.OrePolynomialRing`)
|
|
3181
|
+
|
|
3182
|
+
- ``codomain`` -- (default: ``None``) the codomain of the pseudo
|
|
3183
|
+
morphisms; if ``None``, the codomain is the same than the domain
|
|
3184
|
+
|
|
3185
|
+
- ``side`` -- (default: ``left``) side of the vectors acted on by
|
|
3186
|
+
the matrix
|
|
3187
|
+
|
|
3188
|
+
EXAMPLES::
|
|
3189
|
+
|
|
3190
|
+
sage: # needs sage.rings.finite_rings
|
|
3191
|
+
sage: K.<z> = GF(5^5)
|
|
3192
|
+
sage: Frob = K.frobenius_endomorphism()
|
|
3193
|
+
sage: V = K^2; W = K^3
|
|
3194
|
+
sage: f = V.pseudohom([[1, z, z^2], [1, z^2, z^4]], Frob, codomain=W)
|
|
3195
|
+
sage: f
|
|
3196
|
+
Free module pseudomorphism (twisted by z |--> z^5) defined by the matrix
|
|
3197
|
+
[ 1 z z^2]
|
|
3198
|
+
[ 1 z^2 z^4]
|
|
3199
|
+
Domain: Vector space of dimension 2 over Finite Field in z of size 5^5
|
|
3200
|
+
Codomain: Vector space of dimension 3 over Finite Field in z of size 5^5
|
|
3201
|
+
|
|
3202
|
+
We check that `f` is indeed semi-linear::
|
|
3203
|
+
|
|
3204
|
+
sage: # needs sage.rings.finite_rings
|
|
3205
|
+
sage: v = V([z+1, z+2])
|
|
3206
|
+
sage: f(z*v)
|
|
3207
|
+
(2*z^2 + z + 4, z^4 + 2*z^3 + 3*z^2 + z, 4*z^4 + 2*z^2 + 3*z + 2)
|
|
3208
|
+
sage: z^5 * f(v)
|
|
3209
|
+
(2*z^2 + z + 4, z^4 + 2*z^3 + 3*z^2 + z, 4*z^4 + 2*z^2 + 3*z + 2)
|
|
3210
|
+
|
|
3211
|
+
An example with a derivation::
|
|
3212
|
+
|
|
3213
|
+
sage: # needs sage.rings.finite_rings
|
|
3214
|
+
sage: R.<t> = ZZ[]
|
|
3215
|
+
sage: d = R.derivation()
|
|
3216
|
+
sage: M = R^2
|
|
3217
|
+
sage: Nabla = M.pseudohom([[1, t], [t^2, t^3]], d, side='right')
|
|
3218
|
+
sage: Nabla
|
|
3219
|
+
Free module pseudomorphism (twisted by d/dt) defined as left-multiplication by the matrix
|
|
3220
|
+
[ 1 t]
|
|
3221
|
+
[t^2 t^3]
|
|
3222
|
+
Domain: Ambient free module of rank 2 over the integral domain Univariate Polynomial Ring in t over Integer Ring
|
|
3223
|
+
Codomain: Ambient free module of rank 2 over the integral domain Univariate Polynomial Ring in t over Integer Ring
|
|
3224
|
+
sage: v = M([1,1])
|
|
3225
|
+
sage: Nabla(v)
|
|
3226
|
+
(t + 1, t^3 + t^2)
|
|
3227
|
+
sage: Nabla(t*v)
|
|
3228
|
+
(t^2 + t + 1, t^4 + t^3 + 1)
|
|
3229
|
+
sage: Nabla(t*v) == t * Nabla(v) + v
|
|
3230
|
+
True
|
|
3231
|
+
|
|
3232
|
+
If the twisting derivation is not zero, the domain must
|
|
3233
|
+
coerce into the codomain::
|
|
3234
|
+
|
|
3235
|
+
sage: # needs sage.rings.finite_rings
|
|
3236
|
+
sage: N = R^3
|
|
3237
|
+
sage: M.pseudohom([[1, t, t^2], [1, t^2, t^4]], d, codomain=N)
|
|
3238
|
+
Traceback (most recent call last):
|
|
3239
|
+
...
|
|
3240
|
+
ValueError: the domain does not coerce into the codomain
|
|
3241
|
+
|
|
3242
|
+
.. SEEALSO::
|
|
3243
|
+
|
|
3244
|
+
:meth:`pseudoHom`
|
|
3245
|
+
"""
|
|
3246
|
+
H = self.pseudoHom(twist, codomain)
|
|
3247
|
+
return H(f, side)
|
|
3248
|
+
|
|
3118
3249
|
def inner_product_matrix(self):
|
|
3119
3250
|
"""
|
|
3120
3251
|
Return the default identity inner product matrix associated to this
|
|
@@ -3162,7 +3293,7 @@ class FreeModule_generic(Module_free_ambient):
|
|
|
3162
3293
|
"""
|
|
3163
3294
|
return True
|
|
3164
3295
|
|
|
3165
|
-
def is_ambient(self):
|
|
3296
|
+
def is_ambient(self) -> bool:
|
|
3166
3297
|
"""
|
|
3167
3298
|
Return ``False`` since this is not an ambient free module.
|
|
3168
3299
|
|
|
@@ -3187,7 +3318,7 @@ class FreeModule_generic(Module_free_ambient):
|
|
|
3187
3318
|
"""
|
|
3188
3319
|
return False
|
|
3189
3320
|
|
|
3190
|
-
def is_dense(self):
|
|
3321
|
+
def is_dense(self) -> bool:
|
|
3191
3322
|
"""
|
|
3192
3323
|
Return ``True`` if the underlying representation of
|
|
3193
3324
|
this module uses dense vectors, and ``False`` otherwise.
|
|
@@ -3201,7 +3332,7 @@ class FreeModule_generic(Module_free_ambient):
|
|
|
3201
3332
|
"""
|
|
3202
3333
|
return not self.is_sparse()
|
|
3203
3334
|
|
|
3204
|
-
def is_full(self):
|
|
3335
|
+
def is_full(self) -> bool:
|
|
3205
3336
|
"""
|
|
3206
3337
|
Return ``True`` if the rank of this module equals its
|
|
3207
3338
|
degree.
|
|
@@ -3216,7 +3347,7 @@ class FreeModule_generic(Module_free_ambient):
|
|
|
3216
3347
|
"""
|
|
3217
3348
|
return self.rank() == self.degree()
|
|
3218
3349
|
|
|
3219
|
-
def is_finite(self):
|
|
3350
|
+
def is_finite(self) -> bool:
|
|
3220
3351
|
"""
|
|
3221
3352
|
Return ``True`` if the underlying set of this free module is finite.
|
|
3222
3353
|
|
|
@@ -4632,7 +4763,7 @@ class FreeModule_generic_field(FreeModule_generic_pid):
|
|
|
4632
4763
|
B = [A1.linear_combination_of_rows(v.list()[:n]) for v in K.basis()]
|
|
4633
4764
|
return self.ambient_vector_space().submodule(B, check=False)
|
|
4634
4765
|
|
|
4635
|
-
def is_subspace(self, other):
|
|
4766
|
+
def is_subspace(self, other) -> bool:
|
|
4636
4767
|
"""
|
|
4637
4768
|
``True`` if this vector space is a subspace of ``other``.
|
|
4638
4769
|
|
|
@@ -5679,7 +5810,7 @@ class FreeModule_ambient(FreeModule_generic):
|
|
|
5679
5810
|
t = "(%s)" % t
|
|
5680
5811
|
return "%s^{%s}" % (t, self.rank())
|
|
5681
5812
|
|
|
5682
|
-
def is_ambient(self):
|
|
5813
|
+
def is_ambient(self) -> bool:
|
|
5683
5814
|
"""
|
|
5684
5815
|
Return ``True`` since this module is an ambient
|
|
5685
5816
|
module.
|
|
@@ -6807,9 +6938,10 @@ class FreeModule_submodule_with_basis_pid(FreeModule_generic_pid):
|
|
|
6807
6938
|
|
|
6808
6939
|
::
|
|
6809
6940
|
|
|
6810
|
-
sage:
|
|
6811
|
-
sage:
|
|
6812
|
-
sage: N
|
|
6941
|
+
sage: # needs sage.libs.pari
|
|
6942
|
+
sage: M = FreeModule(ZZ, 8, sparse=True)
|
|
6943
|
+
sage: N = M.submodule_with_basis([M.gen(i) - M.gen(0) for i in range(1,8)])
|
|
6944
|
+
sage: N # indirect doctest
|
|
6813
6945
|
Sparse free module of degree 8 and rank 7 over Integer Ring
|
|
6814
6946
|
User basis matrix:
|
|
6815
6947
|
[-1 1 0 0 0 0 0 0]
|
|
@@ -7037,7 +7169,8 @@ class FreeModule_submodule_with_basis_pid(FreeModule_generic_pid):
|
|
|
7037
7169
|
|
|
7038
7170
|
We do an example with a sparse vector space::
|
|
7039
7171
|
|
|
7040
|
-
sage:
|
|
7172
|
+
sage: # needs sage.libs.pari
|
|
7173
|
+
sage: V = VectorSpace(QQ, 5, sparse=True)
|
|
7041
7174
|
sage: W = V.subspace_with_basis([[0,1,2,0,0], [0,-1,0,0,-1/2]])
|
|
7042
7175
|
sage: W.echelonized_basis()
|
|
7043
7176
|
[(0, 1, 0, 0, 1/2), (0, 0, 1, 0, -1/4)]
|
|
@@ -7509,7 +7642,7 @@ class FreeModule_submodule_with_basis_pid(FreeModule_generic_pid):
|
|
|
7509
7642
|
"""
|
|
7510
7643
|
return FreeModule(self.base_ring().fraction_field(), self.rank())(self.echelon_coordinates(v, check=check))
|
|
7511
7644
|
|
|
7512
|
-
def has_user_basis(self):
|
|
7645
|
+
def has_user_basis(self) -> bool:
|
|
7513
7646
|
"""
|
|
7514
7647
|
Return ``True`` if the basis of this free module is
|
|
7515
7648
|
specified by the user, as opposed to being the default echelon
|
|
@@ -7659,7 +7792,7 @@ class FreeModule_submodule_pid(FreeModule_submodule_with_basis_pid):
|
|
|
7659
7792
|
"""
|
|
7660
7793
|
return self.echelon_coordinate_vector(v, check=check)
|
|
7661
7794
|
|
|
7662
|
-
def has_user_basis(self):
|
|
7795
|
+
def has_user_basis(self) -> bool:
|
|
7663
7796
|
r"""
|
|
7664
7797
|
Return ``True`` if the basis of this free module is
|
|
7665
7798
|
specified by the user, as opposed to being the default echelon
|
|
@@ -7800,9 +7933,10 @@ class FreeModule_submodule_with_basis_field(FreeModule_generic_field, FreeModule
|
|
|
7800
7933
|
|
|
7801
7934
|
::
|
|
7802
7935
|
|
|
7803
|
-
sage:
|
|
7804
|
-
sage:
|
|
7805
|
-
sage: UU
|
|
7936
|
+
sage: # needs sage.libs.pari
|
|
7937
|
+
sage: VV = VectorSpace(QQ, 5, sparse=True)
|
|
7938
|
+
sage: UU = VV.submodule([VV.gen(i) - VV.gen(0) for i in range(1,5)])
|
|
7939
|
+
sage: UU # indirect doctest
|
|
7806
7940
|
Sparse vector space of degree 5 and dimension 4 over Rational Field
|
|
7807
7941
|
Basis matrix:
|
|
7808
7942
|
[ 1 0 0 0 -1]
|
|
@@ -7890,9 +8024,9 @@ class FreeModule_submodule_with_basis_field(FreeModule_generic_field, FreeModule
|
|
|
7890
8024
|
# Return the first rank rows (i.e., the nonzero rows).
|
|
7891
8025
|
return E.rows()[:E.rank()]
|
|
7892
8026
|
|
|
7893
|
-
def is_ambient(self):
|
|
8027
|
+
def is_ambient(self) -> bool:
|
|
7894
8028
|
"""
|
|
7895
|
-
Return False since this is not an ambient module.
|
|
8029
|
+
Return ``False`` since this is not an ambient module.
|
|
7896
8030
|
|
|
7897
8031
|
EXAMPLES::
|
|
7898
8032
|
|
|
@@ -8001,9 +8135,10 @@ class FreeModule_submodule_field(FreeModule_submodule_with_basis_field):
|
|
|
8001
8135
|
|
|
8002
8136
|
::
|
|
8003
8137
|
|
|
8004
|
-
sage:
|
|
8005
|
-
sage:
|
|
8006
|
-
sage: UU
|
|
8138
|
+
sage: # needs sage.libs.pari
|
|
8139
|
+
sage: VV = VectorSpace(QQ, 5, sparse=True)
|
|
8140
|
+
sage: UU = VV.submodule([VV.gen(i) - VV.gen(0) for i in range(1,5)])
|
|
8141
|
+
sage: UU # indirect doctest
|
|
8007
8142
|
Sparse vector space of degree 5 and dimension 4 over Rational Field
|
|
8008
8143
|
Basis matrix:
|
|
8009
8144
|
[ 1 0 0 0 -1]
|
|
@@ -8136,14 +8271,15 @@ class FreeModule_submodule_field(FreeModule_submodule_with_basis_field):
|
|
|
8136
8271
|
|
|
8137
8272
|
::
|
|
8138
8273
|
|
|
8139
|
-
sage:
|
|
8274
|
+
sage: # needs sage.libs.pari
|
|
8275
|
+
sage: V = VectorSpace(QQ, 5, sparse=True)
|
|
8140
8276
|
sage: W = V.subspace([[0,1,2,0,0], [0,-1,0,0,-1/2]])
|
|
8141
8277
|
sage: W.coordinate_vector([0,0,2,0,-1/2])
|
|
8142
8278
|
(0, 2)
|
|
8143
8279
|
"""
|
|
8144
8280
|
return self.echelon_coordinate_vector(v, check=check)
|
|
8145
8281
|
|
|
8146
|
-
def has_user_basis(self):
|
|
8282
|
+
def has_user_basis(self) -> bool:
|
|
8147
8283
|
"""
|
|
8148
8284
|
Return ``True`` if the basis of this free module is
|
|
8149
8285
|
specified by the user, as opposed to being the default echelon
|
|
Binary file
|
|
@@ -3620,9 +3620,9 @@ cdef class FreeModuleElement(Vector): # abstract base class
|
|
|
3620
3620
|
...
|
|
3621
3621
|
ArithmeticError: degrees (1 and 2) must be the same
|
|
3622
3622
|
"""
|
|
3623
|
-
return
|
|
3623
|
+
return self.conjugate().dot_product(right)
|
|
3624
3624
|
|
|
3625
|
-
def is_dense(self):
|
|
3625
|
+
def is_dense(self) -> bool:
|
|
3626
3626
|
"""
|
|
3627
3627
|
Return ``True`` if this is a dense vector, which is just a
|
|
3628
3628
|
statement about the data structure, not the number of nonzero
|
|
@@ -3640,7 +3640,7 @@ cdef class FreeModuleElement(Vector): # abstract base class
|
|
|
3640
3640
|
cdef bint is_dense_c(self) noexcept:
|
|
3641
3641
|
return self.parent().is_dense()
|
|
3642
3642
|
|
|
3643
|
-
def is_sparse(self):
|
|
3643
|
+
def is_sparse(self) -> bool:
|
|
3644
3644
|
"""
|
|
3645
3645
|
Return ``True`` if this is a sparse vector, which is just a
|
|
3646
3646
|
statement about the data structure, not the number of nonzero
|
|
@@ -3658,7 +3658,7 @@ cdef class FreeModuleElement(Vector): # abstract base class
|
|
|
3658
3658
|
cdef bint is_sparse_c(self) noexcept:
|
|
3659
3659
|
return self.parent().is_sparse()
|
|
3660
3660
|
|
|
3661
|
-
def is_vector(self):
|
|
3661
|
+
def is_vector(self) -> bool:
|
|
3662
3662
|
"""
|
|
3663
3663
|
Return ``True``, since this is a vector.
|
|
3664
3664
|
|
|
@@ -319,7 +319,7 @@ class FreeModule_submodule_with_basis_integer(FreeModule_submodule_with_basis_pi
|
|
|
319
319
|
True
|
|
320
320
|
|
|
321
321
|
sage: LLL = L.LLL()
|
|
322
|
-
sage: LLL == L.reduced_basis or bool(LLL[0].norm() >= M[0].norm())
|
|
322
|
+
sage: LLL == L.reduced_basis or bool(LLL[0].norm() >= M[0].norm()) # needs sage.symbolic
|
|
323
323
|
True
|
|
324
324
|
"""
|
|
325
325
|
return self._reduced_basis
|
|
@@ -511,7 +511,7 @@ class FreeModule_submodule_with_basis_integer(FreeModule_submodule_with_basis_pi
|
|
|
511
511
|
return abs(self.gram_matrix().determinant())
|
|
512
512
|
|
|
513
513
|
@cached_method
|
|
514
|
-
def is_unimodular(self):
|
|
514
|
+
def is_unimodular(self) -> bool:
|
|
515
515
|
"""
|
|
516
516
|
Return ``True`` if this lattice is unimodular.
|
|
517
517
|
|
|
@@ -659,7 +659,7 @@ class BaseIsomorphism1D(Morphism):
|
|
|
659
659
|
Multivariate Polynomial Ring in x, y over Rational Field
|
|
660
660
|
To: Multivariate Polynomial Ring in x, y over Rational Field
|
|
661
661
|
"""
|
|
662
|
-
def _repr_type(self):
|
|
662
|
+
def _repr_type(self) -> str:
|
|
663
663
|
r"""
|
|
664
664
|
EXAMPLES::
|
|
665
665
|
|
|
@@ -670,7 +670,7 @@ class BaseIsomorphism1D(Morphism):
|
|
|
670
670
|
"""
|
|
671
671
|
return "Isomorphism"
|
|
672
672
|
|
|
673
|
-
def is_injective(self):
|
|
673
|
+
def is_injective(self) -> bool:
|
|
674
674
|
r"""
|
|
675
675
|
EXAMPLES::
|
|
676
676
|
|
|
@@ -681,7 +681,7 @@ class BaseIsomorphism1D(Morphism):
|
|
|
681
681
|
"""
|
|
682
682
|
return True
|
|
683
683
|
|
|
684
|
-
def is_surjective(self):
|
|
684
|
+
def is_surjective(self) -> bool:
|
|
685
685
|
r"""
|
|
686
686
|
EXAMPLES::
|
|
687
687
|
|