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.

Files changed (334) hide show
  1. {passagemath_modules-10.5.32.dist-info → passagemath_modules-10.6.20.dist-info}/METADATA +51 -46
  2. {passagemath_modules-10.5.32.dist-info → passagemath_modules-10.6.20.dist-info}/RECORD +333 -323
  3. {passagemath_modules-10.5.32.dist-info → passagemath_modules-10.6.20.dist-info}/WHEEL +1 -1
  4. passagemath_modules.dylibs/libgcc_s.1.1.dylib +0 -0
  5. passagemath_modules.dylibs/libgfortran.5.dylib +0 -0
  6. passagemath_modules.dylibs/libgsl.28.dylib +0 -0
  7. passagemath_modules.dylibs/libmpc.3.dylib +0 -0
  8. passagemath_modules.dylibs/libopenblasp-r0.3.29.dylib +0 -0
  9. passagemath_modules.dylibs/libquadmath.0.dylib +0 -0
  10. sage/algebras/clifford_algebra.py +2 -2
  11. sage/algebras/clifford_algebra_element.cpython-310-darwin.so +0 -0
  12. sage/algebras/clifford_algebra_element.pyx +4 -2
  13. sage/algebras/exterior_algebra_groebner.cpython-310-darwin.so +0 -0
  14. sage/algebras/exterior_algebra_groebner.pyx +2 -0
  15. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra.py +83 -5
  16. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.cpython-310-darwin.so +0 -0
  17. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pxd +2 -0
  18. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pyx +28 -3
  19. sage/algebras/finite_gca.py +1 -1
  20. sage/algebras/lie_algebras/bgg_dual_module.py +18 -11
  21. sage/algebras/lie_algebras/classical_lie_algebra.py +3 -3
  22. sage/algebras/lie_algebras/examples.py +2 -2
  23. sage/algebras/lie_algebras/free_lie_algebra.py +1 -1
  24. sage/algebras/lie_algebras/heisenberg.py +4 -4
  25. sage/algebras/lie_algebras/lie_algebra.py +1 -1
  26. sage/algebras/lie_algebras/lie_algebra_element.cpython-310-darwin.so +0 -0
  27. sage/algebras/lie_algebras/lie_algebra_element.pyx +65 -28
  28. sage/algebras/lie_algebras/quotient.py +40 -29
  29. sage/algebras/lie_algebras/subalgebra.py +76 -53
  30. sage/algebras/lie_algebras/verma_module.py +1 -3
  31. sage/algebras/octonion_algebra.cpython-310-darwin.so +0 -0
  32. sage/algebras/octonion_algebra.pyx +1 -1
  33. sage/algebras/orlik_solomon.py +4 -4
  34. sage/algebras/orlik_terao.py +4 -4
  35. sage/algebras/steenrod/steenrod_algebra.py +37 -30
  36. sage/algebras/steenrod/steenrod_algebra_bases.py +2 -2
  37. sage/algebras/steenrod/steenrod_algebra_misc.py +4 -4
  38. sage/algebras/steenrod/steenrod_algebra_mult.py +2 -2
  39. sage/all__sagemath_modules.py +1 -0
  40. sage/calculus/integration.cpython-310-darwin.so +0 -0
  41. sage/calculus/integration.pyx +6 -5
  42. sage/calculus/interpolation.cpython-310-darwin.so +0 -0
  43. sage/calculus/interpolators.cpython-310-darwin.so +0 -0
  44. sage/calculus/ode.cpython-310-darwin.so +0 -0
  45. sage/calculus/ode.pxd +2 -2
  46. sage/calculus/ode.pyx +6 -4
  47. sage/calculus/riemann.cpython-310-darwin.so +0 -0
  48. sage/calculus/riemann.pyx +68 -48
  49. sage/calculus/transforms/dwt.cpython-310-darwin.so +0 -0
  50. sage/calculus/transforms/fft.cpython-310-darwin.so +0 -0
  51. sage/coding/ag_code_decoders.cpython-310-darwin.so +0 -0
  52. sage/coding/ag_code_decoders.pyx +31 -31
  53. sage/coding/binary_code.cpython-310-darwin.so +0 -0
  54. sage/coding/binary_code.pxd +6 -6
  55. sage/coding/binary_code.pyx +212 -173
  56. sage/coding/guruswami_sudan/utils.py +3 -5
  57. sage/coding/kasami_codes.cpython-310-darwin.so +0 -0
  58. sage/coding/kasami_codes.pyx +20 -24
  59. sage/coding/linear_code.py +2 -2
  60. sage/coding/linear_code_no_metric.py +5 -5
  61. sage/coding/linear_rank_metric.py +81 -19
  62. sage/combinat/cartesian_product.py +1 -1
  63. sage/combinat/free_module.py +22 -2
  64. sage/combinat/root_system/all.py +1 -1
  65. sage/combinat/root_system/ambient_space.py +1 -1
  66. sage/combinat/root_system/associahedron.py +4 -4
  67. sage/combinat/root_system/braid_move_calculator.py +2 -2
  68. sage/combinat/root_system/braid_orbit.cpython-310-darwin.so +0 -0
  69. sage/combinat/root_system/braid_orbit.pyx +1 -1
  70. sage/combinat/root_system/branching_rules.py +3 -3
  71. sage/combinat/root_system/cartan_type.py +14 -14
  72. sage/combinat/root_system/coxeter_group.py +3 -3
  73. sage/combinat/root_system/coxeter_matrix.py +1 -1
  74. sage/combinat/root_system/coxeter_type.py +12 -1
  75. sage/combinat/root_system/extended_affine_weyl_group.py +9 -9
  76. sage/combinat/root_system/fundamental_group.py +3 -5
  77. sage/combinat/root_system/hecke_algebra_representation.py +1 -1
  78. sage/combinat/root_system/integrable_representations.py +1 -1
  79. sage/combinat/root_system/pieri_factors.py +3 -3
  80. sage/combinat/root_system/root_lattice_realization_algebras.py +1 -1
  81. sage/combinat/root_system/root_lattice_realizations.py +1 -1
  82. sage/combinat/root_system/type_folded.py +3 -3
  83. sage/combinat/root_system/type_reducible.py +8 -7
  84. sage/combinat/root_system/type_super_A.py +2 -2
  85. sage/combinat/root_system/weight_lattice_realizations.py +9 -8
  86. sage/combinat/root_system/weyl_characters.py +2 -2
  87. sage/crypto/__init__.py +1 -0
  88. sage/crypto/block_cipher/des.py +1 -1
  89. sage/crypto/block_cipher/miniaes.py +3 -3
  90. sage/crypto/block_cipher/present.py +3 -3
  91. sage/crypto/block_cipher/sdes.py +3 -3
  92. sage/crypto/boolean_function.cpython-310-darwin.so +0 -0
  93. sage/crypto/boolean_function.pyx +22 -23
  94. sage/crypto/key_exchange/diffie_hellman.py +4 -9
  95. sage/crypto/mq/sr.py +1 -1
  96. sage/crypto/public_key/blum_goldwasser.py +3 -3
  97. sage/crypto/sbox.cpython-310-darwin.so +0 -0
  98. sage/crypto/sbox.pyx +1 -1
  99. sage/crypto/sboxes.py +22 -0
  100. sage/crypto/util.py +4 -6
  101. sage/ext/interpreters/__init__.py +1 -1
  102. sage/ext/interpreters/all__sagemath_modules.py +1 -1
  103. sage/ext/interpreters/wrapper_cc.cpython-310-darwin.so +0 -0
  104. sage/ext/interpreters/wrapper_cc.pxd +5 -5
  105. sage/ext/interpreters/wrapper_cc.pyx +1 -1
  106. sage/ext/interpreters/wrapper_cdf.cpython-310-darwin.so +0 -0
  107. sage/ext/interpreters/wrapper_cdf.pxd +5 -7
  108. sage/ext/interpreters/wrapper_cdf.pyx +4 -10
  109. sage/ext/interpreters/wrapper_rdf.cpython-310-darwin.so +0 -0
  110. sage/ext/interpreters/wrapper_rdf.pxd +1 -1
  111. sage/ext/interpreters/wrapper_rdf.pyx +1 -1
  112. sage/ext/interpreters/wrapper_rr.cpython-310-darwin.so +0 -0
  113. sage/ext/interpreters/wrapper_rr.pxd +5 -5
  114. sage/ext/interpreters/wrapper_rr.pyx +1 -2
  115. sage/geometry/toric_lattice.py +3 -3
  116. sage/geometry/toric_lattice_element.cpython-310-darwin.so +0 -0
  117. sage/groups/additive_abelian/additive_abelian_group.py +1 -1
  118. sage/groups/additive_abelian/qmodnz.py +4 -4
  119. sage/groups/matrix_gps/coxeter_group.py +17 -4
  120. sage/groups/matrix_gps/group_element.cpython-310-darwin.so +0 -0
  121. sage/groups/misc_gps/argument_groups.py +2 -2
  122. sage/groups/misc_gps/imaginary_groups.py +4 -4
  123. sage/groups/perm_gps/partn_ref/refinement_binary.cpython-310-darwin.so +0 -0
  124. sage/groups/perm_gps/partn_ref/refinement_matrices.cpython-310-darwin.so +0 -0
  125. sage/homology/chain_complex.py +0 -2
  126. sage/homology/hochschild_complex.py +3 -3
  127. sage/homology/homology_morphism.py +6 -6
  128. sage/homology/homology_vector_space_with_basis.py +1 -1
  129. sage/libs/gsl/array.cpython-310-darwin.so +0 -0
  130. sage/libs/mpmath/utils.cpython-310-darwin.so +0 -0
  131. sage/matrix/action.cpython-310-darwin.so +0 -0
  132. sage/matrix/args.cpython-310-darwin.so +0 -0
  133. sage/matrix/args.pyx +25 -10
  134. sage/matrix/benchmark.py +8 -4
  135. sage/matrix/compute_J_ideal.py +2 -2
  136. sage/matrix/constructor.cpython-310-darwin.so +0 -0
  137. sage/matrix/echelon_matrix.cpython-310-darwin.so +0 -0
  138. sage/matrix/echelon_matrix.pyx +1 -1
  139. sage/matrix/matrix0.cpython-310-darwin.so +0 -0
  140. sage/matrix/matrix0.pxd +3 -3
  141. sage/matrix/matrix0.pyx +7 -5
  142. sage/matrix/matrix1.cpython-310-darwin.so +0 -0
  143. sage/matrix/matrix1.pyx +87 -48
  144. sage/matrix/matrix2.cpython-310-darwin.so +0 -0
  145. sage/matrix/matrix2.pxd +3 -3
  146. sage/matrix/matrix2.pyx +1261 -63
  147. sage/matrix/matrix_cdv.cpython-310-darwin.so +0 -0
  148. sage/matrix/matrix_complex_double_dense.cpython-310-darwin.so +0 -0
  149. sage/matrix/matrix_complex_double_dense.pyx +1 -1
  150. sage/matrix/matrix_dense.cpython-310-darwin.so +0 -0
  151. sage/matrix/matrix_dense.pyx +2 -3
  152. sage/matrix/matrix_double_dense.cpython-310-darwin.so +0 -0
  153. sage/matrix/matrix_double_dense.pyx +11 -5
  154. sage/matrix/matrix_double_sparse.cpython-310-darwin.so +0 -0
  155. sage/matrix/matrix_generic_dense.cpython-310-darwin.so +0 -0
  156. sage/matrix/matrix_generic_sparse.cpython-310-darwin.so +0 -0
  157. sage/matrix/matrix_generic_sparse.pyx +1 -1
  158. sage/matrix/matrix_laurent_mpolynomial_dense.cpython-310-darwin.so +0 -0
  159. sage/matrix/matrix_numpy_dense.cpython-310-darwin.so +0 -0
  160. sage/matrix/matrix_numpy_integer_dense.cpython-310-darwin.so +0 -0
  161. sage/matrix/matrix_polynomial_dense.cpython-310-darwin.so +0 -0
  162. sage/matrix/matrix_polynomial_dense.pyx +952 -261
  163. sage/matrix/matrix_real_double_dense.cpython-310-darwin.so +0 -0
  164. sage/matrix/matrix_sparse.cpython-310-darwin.so +0 -0
  165. sage/matrix/matrix_sparse.pyx +6 -7
  166. sage/matrix/matrix_window.cpython-310-darwin.so +0 -0
  167. sage/matrix/matrix_window.pyx +2 -2
  168. sage/matrix/misc_mpfr.cpython-310-darwin.so +0 -0
  169. sage/matrix/operation_table.py +0 -2
  170. sage/matrix/special.py +5 -1
  171. sage/matrix/strassen.cpython-310-darwin.so +0 -0
  172. sage/matrix/strassen.pyx +1 -1
  173. sage/matroids/basis_exchange_matroid.cpython-310-darwin.so +0 -0
  174. sage/matroids/basis_matroid.cpython-310-darwin.so +0 -0
  175. sage/matroids/chow_ring.py +68 -65
  176. sage/matroids/chow_ring_ideal.py +41 -38
  177. sage/matroids/circuit_closures_matroid.cpython-310-darwin.so +0 -0
  178. sage/matroids/circuits_matroid.cpython-310-darwin.so +0 -0
  179. sage/matroids/database_matroids.py +16 -5
  180. sage/matroids/dual_matroid.py +2 -2
  181. sage/matroids/extension.cpython-310-darwin.so +0 -0
  182. sage/matroids/flats_matroid.cpython-310-darwin.so +0 -0
  183. sage/matroids/gammoid.py +1 -1
  184. sage/matroids/graphic_matroid.cpython-310-darwin.so +0 -0
  185. sage/matroids/graphic_matroid.pyx +3 -3
  186. sage/matroids/lean_matrix.cpython-310-darwin.so +0 -0
  187. sage/matroids/lean_matrix.pyx +22 -22
  188. sage/matroids/linear_matroid.cpython-310-darwin.so +0 -0
  189. sage/matroids/linear_matroid.pyx +13 -13
  190. sage/matroids/matroid.cpython-310-darwin.so +0 -0
  191. sage/matroids/matroid.pyx +15 -15
  192. sage/matroids/matroids_plot_helpers.py +48 -46
  193. sage/matroids/minor_matroid.py +2 -2
  194. sage/matroids/set_system.cpython-310-darwin.so +0 -0
  195. sage/matroids/transversal_matroid.cpython-310-darwin.so +0 -0
  196. sage/matroids/transversal_matroid.pyx +3 -3
  197. sage/matroids/union_matroid.cpython-310-darwin.so +0 -0
  198. sage/matroids/union_matroid.pyx +3 -0
  199. sage/matroids/unpickling.cpython-310-darwin.so +0 -0
  200. sage/matroids/utilities.py +2 -2
  201. sage/misc/c3.cpython-310-darwin.so +0 -0
  202. sage/misc/compat.py +1 -2
  203. sage/misc/pickle_old.cpython-310-darwin.so +0 -0
  204. sage/modules/diamond_cutting.py +117 -30
  205. sage/modules/fg_pid/fgp_module.py +3 -3
  206. sage/modules/filtered_vector_space.py +4 -4
  207. sage/modules/finite_submodule_iter.cpython-310-darwin.so +0 -0
  208. sage/modules/fp_graded/free_module.py +2 -2
  209. sage/modules/fp_graded/module.py +2 -2
  210. sage/modules/fp_graded/morphism.py +4 -4
  211. sage/modules/fp_graded/steenrod/morphism.py +1 -1
  212. sage/modules/free_module.py +162 -26
  213. sage/modules/free_module_element.cpython-310-darwin.so +0 -0
  214. sage/modules/free_module_element.pyx +4 -4
  215. sage/modules/free_module_integer.py +2 -2
  216. sage/modules/free_module_morphism.py +3 -3
  217. sage/modules/free_module_pseudohomspace.py +352 -0
  218. sage/modules/free_module_pseudomorphism.py +578 -0
  219. sage/modules/free_quadratic_module_integer_symmetric.py +24 -13
  220. sage/modules/matrix_morphism.py +9 -9
  221. sage/modules/multi_filtered_vector_space.py +4 -4
  222. sage/modules/ore_module.py +2208 -0
  223. sage/modules/ore_module_element.py +178 -0
  224. sage/modules/ore_module_homspace.py +147 -0
  225. sage/modules/ore_module_morphism.py +968 -0
  226. sage/modules/quotient_module.py +11 -1
  227. sage/modules/submodule.py +1 -1
  228. sage/modules/torsion_quadratic_module.py +1 -1
  229. sage/modules/vector_complex_double_dense.cpython-310-darwin.so +0 -0
  230. sage/modules/vector_double_dense.cpython-310-darwin.so +0 -0
  231. sage/modules/vector_integer_dense.cpython-310-darwin.so +0 -0
  232. sage/modules/vector_integer_sparse.cpython-310-darwin.so +0 -0
  233. sage/modules/vector_integer_sparse.pyx +4 -4
  234. sage/modules/vector_modn_dense.cpython-310-darwin.so +0 -0
  235. sage/modules/vector_modn_sparse.cpython-310-darwin.so +0 -0
  236. sage/modules/vector_numpy_dense.cpython-310-darwin.so +0 -0
  237. sage/modules/vector_numpy_integer_dense.cpython-310-darwin.so +0 -0
  238. sage/modules/vector_rational_dense.cpython-310-darwin.so +0 -0
  239. sage/modules/vector_rational_dense.pyx +1 -1
  240. sage/modules/vector_rational_sparse.cpython-310-darwin.so +0 -0
  241. sage/modules/vector_rational_sparse.pyx +5 -5
  242. sage/modules/vector_real_double_dense.cpython-310-darwin.so +0 -0
  243. sage/modules/vector_space_morphism.py +2 -2
  244. sage/modules/with_basis/cell_module.py +17 -0
  245. sage/modules/with_basis/indexed_element.cpython-310-darwin.so +0 -0
  246. sage/modules/with_basis/indexed_element.pyx +1 -1
  247. sage/modules/with_basis/invariant.py +1 -1
  248. sage/modules/with_basis/representation.py +0 -1
  249. sage/modules/with_basis/subquotient.py +2 -2
  250. sage/numerical/gauss_legendre.cpython-310-darwin.so +0 -0
  251. sage/probability/probability_distribution.cpython-310-darwin.so +0 -0
  252. sage/quadratic_forms/binary_qf.py +11 -11
  253. sage/quadratic_forms/bqf_class_group.py +26 -92
  254. sage/quadratic_forms/count_local_2.cpython-310-darwin.so +0 -0
  255. sage/quadratic_forms/extras.py +1 -1
  256. sage/quadratic_forms/quadratic_form.py +5 -4
  257. sage/quadratic_forms/quadratic_form__equivalence_testing.py +7 -4
  258. sage/quadratic_forms/quadratic_form__evaluate.cpython-310-darwin.so +0 -0
  259. sage/quadratic_forms/quadratic_form__local_field_invariants.py +10 -10
  260. sage/quadratic_forms/quadratic_form__ternary_Tornaria.py +2 -2
  261. sage/quadratic_forms/ternary.cpython-310-darwin.so +0 -0
  262. sage/quadratic_forms/ternary_qf.py +50 -83
  263. sage/rings/cfinite_sequence.py +16 -17
  264. sage/rings/complex_conversion.cpython-310-darwin.so +0 -0
  265. sage/rings/complex_double.cpython-310-darwin.so +0 -0
  266. sage/rings/complex_double.pxd +1 -0
  267. sage/rings/complex_double.pyx +37 -32
  268. sage/rings/complex_mpc.cpython-310-darwin.so +0 -0
  269. sage/rings/complex_mpc.pyx +27 -23
  270. sage/rings/complex_mpfr.cpython-310-darwin.so +0 -0
  271. sage/rings/complex_mpfr.pyx +11 -11
  272. sage/rings/function_field/drinfeld_modules/charzero_drinfeld_module.py +277 -21
  273. sage/rings/function_field/drinfeld_modules/drinfeld_module.py +10 -1
  274. sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py +1 -1
  275. sage/rings/function_field/drinfeld_modules/homset.py +1 -2
  276. sage/rings/function_field/drinfeld_modules/morphism.py +2 -2
  277. sage/rings/function_field/hermite_form_polynomial.cpython-310-darwin.so +0 -0
  278. sage/rings/function_field/khuri_makdisi.cpython-310-darwin.so +0 -0
  279. sage/rings/function_field/khuri_makdisi.pyx +27 -25
  280. sage/rings/invariants/invariant_theory.py +61 -60
  281. sage/rings/invariants/reconstruction.py +8 -8
  282. sage/rings/polynomial/laurent_polynomial_mpair.cpython-310-darwin.so +0 -0
  283. sage/rings/polynomial/ore_function_element.py +1 -1
  284. sage/rings/polynomial/ore_polynomial_element.cpython-310-darwin.so +0 -0
  285. sage/rings/polynomial/ore_polynomial_element.pyx +8 -8
  286. sage/rings/polynomial/ore_polynomial_ring.py +134 -17
  287. sage/rings/polynomial/polynomial_real_mpfr_dense.cpython-310-darwin.so +0 -0
  288. sage/rings/polynomial/skew_polynomial_element.cpython-310-darwin.so +0 -0
  289. sage/rings/polynomial/skew_polynomial_finite_field.cpython-310-darwin.so +0 -0
  290. sage/rings/polynomial/skew_polynomial_finite_field.pyx +3 -4
  291. sage/rings/polynomial/skew_polynomial_finite_order.cpython-310-darwin.so +0 -0
  292. sage/rings/polynomial/skew_polynomial_finite_order.pyx +2 -5
  293. sage/rings/real_double_element_gsl.cpython-310-darwin.so +0 -0
  294. sage/rings/real_mpfr.cpython-310-darwin.so +0 -0
  295. sage/rings/real_mpfr.pyx +25 -7
  296. sage/rings/ring_extension.cpython-310-darwin.so +0 -0
  297. sage/rings/ring_extension.pyx +4 -2
  298. sage/rings/ring_extension_conversion.cpython-310-darwin.so +0 -0
  299. sage/rings/ring_extension_element.cpython-310-darwin.so +0 -0
  300. sage/rings/ring_extension_element.pyx +42 -0
  301. sage/rings/ring_extension_morphism.cpython-310-darwin.so +0 -0
  302. sage/schemes/all__sagemath_modules.py +1 -0
  303. sage/schemes/projective/all__sagemath_modules.py +1 -0
  304. sage/schemes/projective/coherent_sheaf.py +300 -0
  305. sage/schemes/projective/cohomology.py +510 -0
  306. sage/stats/basic_stats.py +17 -15
  307. sage/stats/distributions/dgs_misc.h +11 -4
  308. sage/stats/distributions/discrete_gaussian_integer.cpython-310-darwin.so +0 -0
  309. sage/stats/distributions/discrete_gaussian_integer.pyx +9 -7
  310. sage/stats/hmm/chmm.cpython-310-darwin.so +0 -0
  311. sage/stats/hmm/chmm.pyx +13 -13
  312. sage/stats/hmm/distributions.cpython-310-darwin.so +0 -0
  313. sage/stats/hmm/distributions.pxd +3 -3
  314. sage/stats/hmm/distributions.pyx +3 -3
  315. sage/stats/hmm/hmm.cpython-310-darwin.so +0 -0
  316. sage/stats/hmm/hmm.pxd +3 -3
  317. sage/stats/hmm/hmm.pyx +6 -6
  318. sage/stats/hmm/util.cpython-310-darwin.so +0 -0
  319. sage/stats/hmm/util.pyx +6 -6
  320. sage/stats/intlist.cpython-310-darwin.so +0 -0
  321. sage/stats/intlist.pxd +3 -3
  322. sage/stats/time_series.cpython-310-darwin.so +0 -0
  323. sage/tensor/modules/alternating_contr_tensor.py +3 -3
  324. sage/tensor/modules/comp.py +3 -3
  325. sage/tensor/modules/ext_pow_free_module.py +3 -3
  326. sage/tensor/modules/format_utilities.py +3 -3
  327. sage/tensor/modules/free_module_linear_group.py +3 -3
  328. sage/tensor/modules/free_module_morphism.py +0 -1
  329. sage/tensor/modules/tensor_free_module.py +3 -3
  330. sage/tensor/modules/tensor_free_submodule.py +1 -1
  331. sage/tensor/modules/tensor_free_submodule_basis.py +1 -1
  332. sage/tensor/modules/tensor_with_indices.py +5 -5
  333. passagemath_modules.dylibs/libopenblas_armv8p-r0.3.28.dylib +0 -0
  334. {passagemath_modules-10.5.32.dist-info → passagemath_modules-10.6.20.dist-info}/top_level.txt +0 -0
@@ -43,19 +43,19 @@ REFERENCES:
43
43
  # Distributed under the terms of the GNU General Public License (GPL)
44
44
  # as published by the Free Software Foundation; either version 2 of
45
45
  # the License, or (at your option) any later version.
46
- # http://www.gnu.org/licenses/
46
+ # https://www.gnu.org/licenses/
47
47
  # *****************************************************************************
48
48
 
49
49
  from collections import Counter
50
50
  from copy import copy
51
51
  from cpython.object cimport Py_EQ, Py_NE
52
- from sage.graphs.graph import Graph
52
+ import networkx as nx
53
+
53
54
  from sage.graphs.digraph import DiGraph
54
55
  from sage.graphs.bipartite_graph import BipartiteGraph
55
56
  from sage.matroids.basis_exchange_matroid cimport BasisExchangeMatroid
56
57
  from sage.matroids.minor_matroid import MinorMatroid
57
58
  from sage.matroids.utilities import newlabel
58
- import networkx as nx
59
59
 
60
60
 
61
61
  cdef class TransversalMatroid(BasisExchangeMatroid):
@@ -1,4 +1,7 @@
1
1
  # sage_setup: distribution = sagemath-modules
2
+ r"""
3
+ Union of matroids
4
+ """
2
5
  from sage.matroids.matroid cimport Matroid
3
6
 
4
7
  cdef class MatroidUnion(Matroid):
@@ -430,7 +430,7 @@ def spanning_stars(M):
430
430
  # remove low degree vertices
431
431
  H = []
432
432
  # candidate vertices
433
- V_0 = set([])
433
+ V_0 = set()
434
434
  d = 0
435
435
  while G.order():
436
436
  x, d = min(G.degree_iterator(labels=True), key=itemgetter(1))
@@ -445,7 +445,7 @@ def spanning_stars(M):
445
445
  # greedily remove vertices
446
446
  G2 = G.copy()
447
447
  # set of picked vertices
448
- V_1 = set([])
448
+ V_1 = set()
449
449
  while G2.order():
450
450
  # choose vertex with maximum degree in G2
451
451
  x, d = max(G2.degree_iterator(labels=True), key=itemgetter(1))
Binary file
sage/misc/compat.py CHANGED
@@ -8,11 +8,10 @@
8
8
  # it under the terms of the GNU General Public License as published by
9
9
  # the Free Software Foundation, either version 2 of the License, or
10
10
  # (at your option) any later version.
11
- # http://www.gnu.org/licenses/
11
+ # https://www.gnu.org/licenses/
12
12
  # *****************************************************************************
13
13
 
14
14
  import os
15
- import subprocess
16
15
  import sys
17
16
 
18
17
  from sage.env import SAGE_LOCAL
Binary file
@@ -17,13 +17,13 @@ AUTHORS:
17
17
  # ****************************************************************************
18
18
 
19
19
  from sage.geometry.polyhedron.constructor import Polyhedron
20
- from sage.matrix.constructor import matrix, identity_matrix
20
+ from sage.matrix.constructor import matrix
21
21
  from sage.modules.free_module_element import vector
22
22
 
23
23
  from math import sqrt, floor, ceil
24
24
 
25
25
 
26
- def plane_inequality(v):
26
+ def plane_inequality(v) -> list:
27
27
  """
28
28
  Return the inequality for points on the same side as the origin
29
29
  with respect to the plane through ``v`` normal to ``v``.
@@ -60,15 +60,15 @@ def jacobi(M):
60
60
  q_{i,j} =
61
61
  \begin{cases}
62
62
  \frac{1}{q_{i,i}} \left( m_{i,j} - \sum_{r<i} q_{r,r} q_{r,i} q_{r,j} \right) & i < j, \\
63
- a_{i,j} - \sum_{r<i} q_{r,r} q_{r,i}^2 & i = j, \\
63
+ m_{i,j} - \sum_{r<i} q_{r,r} q_{r,i}^2 & i = j, \\
64
64
  0 & i > j,
65
65
  \end{cases}
66
66
 
67
67
  for all `1 \leq i \leq n` and `1 \leq j \leq n`. (These
68
68
  equalities determine the entries of `Q` uniquely by
69
- recursion.) This matrix `Q` is defined for all `M` in a
70
- certain Zariski-dense open subset of the set of all
71
- `n \times n`-matrices.
69
+ recursion.) This matrix `Q` is defined for every invertible
70
+ `n \times n`-matrix `M`. Its definition is taken from (2.3)
71
+ of [FP1985]_.
72
72
 
73
73
  .. NOTE::
74
74
 
@@ -125,10 +125,10 @@ def jacobi(M):
125
125
  return matrix(q)
126
126
 
127
127
 
128
- def diamond_cut(V, GM, C, verbose=False):
128
+ def diamond_cut(V, GM, C, verbose=False) -> Polyhedron:
129
129
  r"""
130
130
  Perform diamond cutting on polyhedron ``V`` with basis matrix ``GM``
131
- and radius ``C``.
131
+ and squared radius ``C``.
132
132
 
133
133
  INPUT:
134
134
 
@@ -136,12 +136,22 @@ def diamond_cut(V, GM, C, verbose=False):
136
136
 
137
137
  - ``GM`` -- half of the basis matrix of the lattice
138
138
 
139
- - ``C`` -- radius to use in cutting algorithm
139
+ - ``C`` -- square of the radius to use in cutting algorithm
140
140
 
141
- - ``verbose`` -- boolean (default: ``False``); whether to print debug information
141
+ - ``verbose`` -- boolean (default: ``False``); whether to print
142
+ debug information
142
143
 
143
144
  OUTPUT: a :class:`Polyhedron` instance
144
145
 
146
+ ALGORITHM:
147
+
148
+ Use the algorithm in (2.8) of [FP1985]_ to iterate through the nonzero
149
+ vectors ``hv`` of length at most `\sqrt{C}` in the lattice spanned by
150
+ ``GM``. (Actually, the algorithm only constructs one vector from each pair
151
+ ``{hv, -hv}``.) For each such vector ``hv``, intersect ``V`` with the
152
+ half-spaces defined by ``plane_inequality(hv)`` and
153
+ ``plane_inequality(-hv)``.
154
+
145
155
  EXAMPLES::
146
156
 
147
157
  sage: from sage.modules.diamond_cutting import diamond_cut
@@ -150,9 +160,18 @@ def diamond_cut(V, GM, C, verbose=False):
150
160
  sage: V = diamond_cut(V, GM, 4)
151
161
  sage: V.vertices()
152
162
  (A vertex at (2), A vertex at (0))
163
+
164
+ TESTS:
165
+
166
+ Verify that code works when no cuts are performed::
167
+
168
+ sage: from sage.modules.free_module_integer import IntegerLattice
169
+ sage: v = vector(ZZ, [1,1,-1])
170
+ sage: L = IntegerLattice([v])
171
+ sage: C = L.voronoi_cell(radius=0.1)
153
172
  """
154
173
  if verbose:
155
- print("Cut\n{}\nwith radius {}".format(GM, C))
174
+ print("Cut\n{}\nwith squared radius {}".format(GM, C))
156
175
 
157
176
  dim = GM.dimensions()
158
177
  if dim[0] != dim[1]:
@@ -182,7 +201,7 @@ def diamond_cut(V, GM, C, verbose=False):
182
201
  inequalities = []
183
202
  while True:
184
203
  if verbose:
185
- print("Dimension: {}".format(i))
204
+ print(f"Dimension: {i}")
186
205
  if new_dimension:
187
206
  Z = sqrt(T[i] / q[i][i])
188
207
  if verbose:
@@ -195,7 +214,7 @@ def diamond_cut(V, GM, C, verbose=False):
195
214
 
196
215
  x[i] += 1
197
216
  if verbose:
198
- print("x: {}".format(x))
217
+ print(f"x: {x}")
199
218
  if x[i] > L[i]:
200
219
  i += 1
201
220
  elif i > 0:
@@ -222,8 +241,9 @@ def diamond_cut(V, GM, C, verbose=False):
222
241
 
223
242
  if verbose:
224
243
  print("Final cut")
225
- cut = Polyhedron(ieqs=inequalities)
226
- V = V.intersection(cut)
244
+ if inequalities:
245
+ cut = Polyhedron(ieqs=inequalities)
246
+ V = V.intersection(cut)
227
247
 
228
248
  if verbose:
229
249
  print("End")
@@ -231,7 +251,7 @@ def diamond_cut(V, GM, C, verbose=False):
231
251
  return V
232
252
 
233
253
 
234
- def calculate_voronoi_cell(basis, radius=None, verbose=False):
254
+ def calculate_voronoi_cell(basis, radius=None, verbose=False) -> Polyhedron:
235
255
  """
236
256
  Calculate the Voronoi cell of the lattice defined by basis.
237
257
 
@@ -239,7 +259,7 @@ def calculate_voronoi_cell(basis, radius=None, verbose=False):
239
259
 
240
260
  - ``basis`` -- embedded basis matrix of the lattice
241
261
 
242
- - ``radius`` -- radius of basis vectors to consider
262
+ - ``radius`` -- square of radius of basis vectors to consider
243
263
 
244
264
  - ``verbose`` -- whether to print debug information
245
265
 
@@ -251,19 +271,90 @@ def calculate_voronoi_cell(basis, radius=None, verbose=False):
251
271
  sage: V = calculate_voronoi_cell(matrix([[1, 0], [0, 1]]))
252
272
  sage: V.volume()
253
273
  1
274
+
275
+ TESTS:
276
+
277
+ Verify that :issue:`39507` is fixed::
278
+
279
+ sage: from sage.modules.free_module_integer import IntegerLattice
280
+ sage: v = vector(ZZ, [1,1,1,-1])
281
+ sage: L = IntegerLattice([v])
282
+ sage: print(v in L)
283
+ True
284
+ sage: print(L.closest_vector(v))
285
+ (1, 1, 1, -1)
286
+ sage: C = L.voronoi_cell()
287
+ sage: C.Hrepresentation()
288
+ (An inequality (-1, -1, -1, 1) x + 2 >= 0,
289
+ An inequality (1, 1, 1, -1) x + 2 >= 0)
290
+ sage: v = vector(ZZ, [1,1,-1])
291
+ sage: L = IntegerLattice([v])
292
+ sage: C = L.voronoi_cell()
293
+ sage: C.Hrepresentation()
294
+ (An inequality (-2, -2, 2) x + 3 >= 0,
295
+ An inequality (2, 2, -2) x + 3 >= 0)
296
+ sage: C.Vrepresentation()
297
+ (A line in the direction (0, 1, 1),
298
+ A line in the direction (1, 0, 1),
299
+ A vertex at (0, 0, -3/2),
300
+ A vertex at (0, 0, 3/2))
301
+
302
+ Verify that :issue:`37086` is fixed::
303
+
304
+ sage: from sage.modules.free_module_integer import IntegerLattice
305
+ sage: l = [7, 0, -1, -2, -1, -2, 7, -2, 0, 0, -2,
306
+ ....: 0, 7, -2, 0, -1, -2, -1, 7, 0 , -1, -1, 0, -2, 7]
307
+ sage: M = matrix(5, 5, l)
308
+ sage: C = IntegerLattice(M).voronoi_cell()
309
+ sage: C
310
+ A 5-dimensional polyhedron in QQ^5 defined as the
311
+ convex hull of 720 vertices
254
312
  """
255
313
  dim = basis.dimensions()
314
+ # LLL-reduce for efficiency.
315
+ basis = basis.LLL()
316
+ if radius is None:
317
+ # Convert the basis matrix to use RDF numbers for efficiency when we
318
+ # calculate the triangular matrix of the QR decomposition.
319
+ from sage.rings.real_double import RDF
320
+ transposed_RDF_matrix = (basis.transpose()).change_ring(RDF)
321
+ R = transposed_RDF_matrix.QR()[1]
322
+ # The length of the vector formed by the diagonal entries of R is an
323
+ # upper bound for twice the covering radius, so it is an upper bound
324
+ # on the length of the lattice vectors that need to be considered for
325
+ # diamond cutting. However, the value of the `radius` keyword is
326
+ # actually a squared length, so there is no square root in the
327
+ # following formula.
328
+ radius = sum(R[i, i]**2 for i in range(dim[0]))
329
+ # We then divide by 4 as we will divide the basis by 2 later on.
330
+ radius = ceil(radius / 4)
256
331
  artificial_length = None
257
332
  if dim[0] < dim[1]:
258
- # introduce "artificial" basis points (representing infinity)
259
- def approx_norm(v):
260
- r, r1 = (v.inner_product(v)).sqrtrem()
261
- return r + (r1 > 0)
262
- artificial_length = max(approx_norm(v) for v in basis) * 2
263
- additional_vectors = identity_matrix(dim[1]) * artificial_length
333
+ F = basis.base_ring().fraction_field()
334
+ # Introduce "artificial" basis points (representing infinity).
335
+ additional_vectors = (F**dim[1]).subspace(basis).complement().basis()
336
+ additional_vectors = matrix(additional_vectors)
337
+ # LLL-reduce for efficiency.
338
+ additional_vectors = additional_vectors.LLL()
339
+
340
+ from sage.rings.real_double import RDF
341
+ # Convert the basis matrix to use RDF numbers for efficiency when we
342
+ # perform the QR decomposition.
343
+ transposed_RDF_matrix = additional_vectors.transpose().change_ring(RDF)
344
+ R = transposed_RDF_matrix.QR()[1]
345
+ # Since R is triangular, its smallest diagonal entry provides a
346
+ # lower bound on the length of the shortest nonzero vector in the
347
+ # lattice spanned by the artificial points. We square it because
348
+ # value of `radius` is a squared length.
349
+ shortest_vector_lower_bound = min(R[i, i]**2
350
+ for i in range(dim[1] - dim[0]))
351
+ # We will multiply our artificial points by the following scalar in
352
+ # order to make sure the squared length of the shortest
353
+ # nonzero vector is greater than radius, even after the vectors
354
+ # are divided by 2.
355
+ artificial_length = ceil(2.001 * sqrt(radius / shortest_vector_lower_bound))
356
+ additional_vectors *= artificial_length
264
357
  basis = basis.stack(additional_vectors)
265
- # LLL-reduce to get quadratic matrix
266
- basis = basis.LLL()
267
358
  basis = matrix([v for v in basis if v])
268
359
  dim = basis.dimensions()
269
360
  if dim[0] != dim[1]:
@@ -276,14 +367,10 @@ def calculate_voronoi_cell(basis, radius=None, verbose=False):
276
367
  ieqs.append(plane_inequality(-v))
277
368
  Q = Polyhedron(ieqs=ieqs)
278
369
 
279
- # twice the length of longest vertex in Q is a safe choice
280
- if radius is None:
281
- radius = 2 * max(v.inner_product(v) for v in basis)
282
-
283
370
  V = diamond_cut(Q, basis, radius, verbose=verbose)
284
371
 
285
372
  if artificial_length is not None:
286
- # remove inequalities introduced by artificial basis points
373
+ # Remove inequalities introduced by artificial basis points.
287
374
  H = V.Hrepresentation()
288
375
  H = [v for v in H if all(not V._is_zero(v.A() * w / 2 - v.b()) and
289
376
  not V._is_zero(v.A() * (-w) / 2 - v.b())
@@ -766,7 +766,7 @@ class FGP_Module_class(Module):
766
766
  V = self._V.submodule(x) + self._W
767
767
  return self._module_constructor(V, self._W)
768
768
 
769
- def has_canonical_map_to(self, A):
769
+ def has_canonical_map_to(self, A) -> bool:
770
770
  """
771
771
  Return ``True`` if ``self`` has a canonical map to ``A``, relative to the
772
772
  given presentation of ``A``.
@@ -797,7 +797,7 @@ class FGP_Module_class(Module):
797
797
  return True
798
798
  return self.V().is_submodule(A.V()) and self.W().is_submodule(A.W())
799
799
 
800
- def is_submodule(self, A):
800
+ def is_submodule(self, A) -> bool:
801
801
  """
802
802
  Return ``True`` if ``self`` is a submodule of ``A``.
803
803
 
@@ -1875,7 +1875,7 @@ class FGP_Module_class(Module):
1875
1875
  from sage.modules.module_functors import QuotientModuleFunctor
1876
1876
  return (QuotientModuleFunctor(self._W), self._V)
1877
1877
 
1878
- def is_finite(self):
1878
+ def is_finite(self) -> bool:
1879
1879
  """
1880
1880
  Return ``True`` if ``self`` is finite and ``False`` otherwise.
1881
1881
 
@@ -518,7 +518,7 @@ class FilteredVectorSpace_class(FreeModule_ambient_field):
518
518
  return VectorSpace(self.base_ring(), self.dimension())
519
519
 
520
520
  @cached_method
521
- def is_constant(self):
521
+ def is_constant(self) -> bool:
522
522
  """
523
523
  Return whether the filtration is constant.
524
524
 
@@ -545,7 +545,7 @@ class FilteredVectorSpace_class(FreeModule_ambient_field):
545
545
  f = self._filt
546
546
  return (len(f) == 1) or (len(f) == 2 and f[1][0] == infinity)
547
547
 
548
- def is_exhaustive(self):
548
+ def is_exhaustive(self) -> bool:
549
549
  r"""
550
550
  Return whether the filtration is exhaustive.
551
551
 
@@ -568,7 +568,7 @@ class FilteredVectorSpace_class(FreeModule_ambient_field):
568
568
  return self.get_degree(minus_infinity).dimension() == \
569
569
  self.ambient_vector_space().dimension()
570
570
 
571
- def is_separating(self):
571
+ def is_separating(self) -> bool:
572
572
  r"""
573
573
  Return whether the filtration is separating.
574
574
 
@@ -911,7 +911,7 @@ class FilteredVectorSpace_class(FreeModule_ambient_field):
911
911
 
912
912
  TESTS::
913
913
 
914
- sage: # needs sage.geometry.polyhedron sage.graphs sage.schemes
914
+ sage: # needs palp sage.geometry.polyhedron sage.graphs sage.schemes
915
915
  sage: P = toric_varieties.P2()
916
916
  sage: T_P = P.sheaves.tangent_bundle()
917
917
  sage: O_P = P.sheaves.trivial_bundle(1)
@@ -502,7 +502,7 @@ class FreeGradedModule(CombinatorialFreeModule):
502
502
  """
503
503
  return self._generator_degrees
504
504
 
505
- def is_trivial(self):
505
+ def is_trivial(self) -> bool:
506
506
  r"""
507
507
  Return ``True`` if this module is trivial and ``False`` otherwise.
508
508
 
@@ -941,7 +941,7 @@ class FreeGradedModule(CombinatorialFreeModule):
941
941
  return FreeGradedModule(algebra=self.base_ring(),
942
942
  generator_degrees=degs)
943
943
 
944
- def has_relations(self):
944
+ def has_relations(self) -> bool:
945
945
  r"""
946
946
  Return ``False`` as this has no relations.
947
947
 
@@ -565,7 +565,7 @@ class FPModule(UniqueRepresentation, IndexedGenerators, Module):
565
565
 
566
566
  return infinity
567
567
 
568
- def is_trivial(self):
568
+ def is_trivial(self) -> bool:
569
569
  r"""
570
570
  Return ``True`` if ``self`` is isomorphic to the trivial module
571
571
  and ``False`` otherwise.
@@ -600,7 +600,7 @@ class FPModule(UniqueRepresentation, IndexedGenerators, Module):
600
600
  """
601
601
  return self.connectivity() == infinity
602
602
 
603
- def has_relations(self):
603
+ def has_relations(self) -> bool:
604
604
  r"""
605
605
  Return ``True`` if no relations are defined, and ``False``
606
606
  otherwise.
@@ -612,7 +612,7 @@ class FPModuleMorphism(Morphism):
612
612
  return homset([self(g(x)) for x in g.domain().generators()])
613
613
 
614
614
  @cached_method
615
- def is_zero(self):
615
+ def is_zero(self) -> bool:
616
616
  r"""
617
617
  Decide if ``self`` is the zero homomorphism.
618
618
 
@@ -648,7 +648,7 @@ class FPModuleMorphism(Morphism):
648
648
  __bool__ = is_zero
649
649
 
650
650
  @cached_method
651
- def is_identity(self):
651
+ def is_identity(self) -> bool:
652
652
  r"""
653
653
  Decide if ``self`` is the identity endomorphism.
654
654
 
@@ -1584,7 +1584,7 @@ class FPModuleMorphism(Morphism):
1584
1584
  # its image equals im(self)
1585
1585
  return Hom(I, j0.codomain())(j0._values)
1586
1586
 
1587
- def is_injective(self, top_dim=None, verbose=False):
1587
+ def is_injective(self, top_dim=None, verbose=False) -> bool:
1588
1588
  r"""
1589
1589
  Return ``True`` if and only if ``self`` has a trivial kernel.
1590
1590
 
@@ -1615,7 +1615,7 @@ class FPModuleMorphism(Morphism):
1615
1615
  j0 = self._resolve_kernel(top_dim, verbose)
1616
1616
  return j0.domain().is_trivial()
1617
1617
 
1618
- def is_surjective(self):
1618
+ def is_surjective(self) -> bool:
1619
1619
  r"""
1620
1620
  Return ``True`` if and only if ``self`` has a trivial cokernel.
1621
1621
 
@@ -92,7 +92,7 @@ class SteenrodFPModuleMorphism(FPModuleMorphism):
92
92
  return enveloping_profile_elements(elements,
93
93
  char=self.base_ring().characteristic())
94
94
 
95
- def is_injective(self, top_dim=None, verbose=False):
95
+ def is_injective(self, top_dim=None, verbose=False) -> bool:
96
96
  r"""
97
97
  Return ``True`` if ``self`` is injective.
98
98