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
@@ -23,7 +23,6 @@ from cpython.object cimport Py_EQ, Py_NE, Py_GT, Py_GE
23
23
  from sage.misc.repr import repr_lincomb
24
24
  from sage.structure.element cimport have_same_parent, parent
25
25
  from sage.structure.coerce cimport coercion_model
26
- from sage.cpython.wrapperdescr cimport wrapperdescr_fastcall
27
26
  from sage.structure.element_wrapper cimport ElementWrapper
28
27
  from sage.structure.richcmp cimport richcmp, richcmp_not_equal
29
28
  from sage.data_structures.blas_dict cimport axpy, add, negate, scal
@@ -67,11 +66,28 @@ cdef class LieAlgebraElement(IndexedFreeModuleElement):
67
66
  """
68
67
  try:
69
68
  # Try the normal coercion first
70
- return wrapperdescr_fastcall(IndexedFreeModuleElement.__mul__,
71
- left, (right,), <object>NULL)
69
+ return IndexedFreeModuleElement.__mul__(left, right)
72
70
  except TypeError:
73
71
  pass
74
72
 
73
+ try:
74
+ # Handle the case of right multiplication by scalar
75
+ if isinstance(left, IndexedFreeModuleElement):
76
+ R = (<IndexedFreeModuleElement>left)._parent._base
77
+ x = R.coerce(right)
78
+ return IndexedFreeModuleElement.__mul__(left, x)
79
+ except (TypeError, KeyError):
80
+ pass
81
+
82
+ try:
83
+ # Handle the case of left multiplication by scalar
84
+ if isinstance(right, IndexedFreeModuleElement):
85
+ R = (<IndexedFreeModuleElement>right)._parent._base
86
+ x = R.coerce(left)
87
+ return IndexedFreeModuleElement.__mul__(x, right)
88
+ except (TypeError, KeyError):
89
+ pass
90
+
75
91
  # Lift up to the UEA and try multiplication there
76
92
  # We will eventually want to lift stuff up anyways,
77
93
  # so just do it here.
@@ -117,7 +133,7 @@ cdef class LieAlgebraElement(IndexedFreeModuleElement):
117
133
  s = codomain.zero()
118
134
  if not self: # If we are 0
119
135
  return s
120
- names = self.parent().variable_names()
136
+ names = self._parent.variable_names()
121
137
  if base_map is None:
122
138
  def base_map(x):
123
139
  return x
@@ -192,10 +208,10 @@ cdef class LieAlgebraElementWrapper(ElementWrapper):
192
208
  The next doctests show similar behavior, although on elements of
193
209
  other classes::
194
210
 
211
+ sage: # needs sage.graphs
195
212
  sage: L = lie_algebras.three_dimensional_by_rank(QQ, 3)
196
213
  sage: L.bracket(L.gen(0), L.gen(1)) == -L.bracket(L.gen(1), L.gen(0))
197
214
  True
198
-
199
215
  sage: L = lie_algebras.three_dimensional_by_rank(QQ, 1)
200
216
  sage: L.bracket(L.gen(0), L.gen(1)) == -L.bracket(L.gen(1), L.gen(0))
201
217
  True
@@ -353,11 +369,28 @@ cdef class LieAlgebraElementWrapper(ElementWrapper):
353
369
  """
354
370
  try:
355
371
  # Try the normal coercion first
356
- return wrapperdescr_fastcall(ElementWrapper.__mul__,
357
- left, (right,), <object>NULL)
372
+ return ElementWrapper.__mul__(left, right)
358
373
  except TypeError:
359
374
  pass
360
375
 
376
+ try:
377
+ # Handle the case of right multiplication by scalar
378
+ if isinstance(left, LieAlgebraElementWrapper):
379
+ R = (<LieAlgebraElementWrapper>left)._parent._base
380
+ x = R.coerce(right)
381
+ return ElementWrapper.__mul__(left, x)
382
+ except (TypeError, KeyError):
383
+ pass
384
+
385
+ try:
386
+ # Handle the case of left multiplication by scalar
387
+ if isinstance(right, LieAlgebraElementWrapper):
388
+ R = (<LieAlgebraElementWrapper>right)._parent._base
389
+ x = R.coerce(left)
390
+ return ElementWrapper.__mul__(x, right)
391
+ except (TypeError, KeyError):
392
+ pass
393
+
361
394
  # Lift up to the UEA and try multiplication there
362
395
  # We will eventually want to lift stuff up anyways,
363
396
  # so just do it here.
@@ -517,10 +550,12 @@ cdef class LieSubalgebraElementWrapper(LieAlgebraElementWrapper):
517
550
 
518
551
  sage: L.<X,Y,Z> = LieAlgebra(QQ, {('X','Y'): {'Z': 1}})
519
552
  sage: S = L.subalgebra([X, Y])
553
+ sage: S.indices()
554
+ {'X', 'Y', 'Z'}
520
555
  sage: el = S(2*Y + 9*Z)
521
- sage: el[1]
556
+ sage: el['Y']
522
557
  2
523
- sage: el[2]
558
+ sage: el['Z']
524
559
  9
525
560
  """
526
561
  if self._monomial_coefficients is None:
@@ -529,7 +564,7 @@ cdef class LieSubalgebraElementWrapper(LieAlgebraElementWrapper):
529
564
  try:
530
565
  return self._monomial_coefficients[i]
531
566
  except KeyError:
532
- return self.parent().base_ring().zero()
567
+ return self._parent.base_ring().zero()
533
568
 
534
569
  def _bracket_(self, x):
535
570
  """
@@ -561,12 +596,12 @@ cdef class LieSubalgebraElementWrapper(LieAlgebraElementWrapper):
561
596
  sage: L.<X,Y,Z> = LieAlgebra(ZZ, {('X','Y'): {'Z': 3}})
562
597
  sage: S = L.subalgebra([X, Y])
563
598
  sage: S.basis()
564
- Family (X, Y, 3*Z)
599
+ Finite family {'X': X, 'Y': Y, 'Z': 3*Z}
565
600
  sage: S(2*Y + 9*Z).to_vector()
566
601
  (0, 2, 9)
567
602
  sage: S2 = L.subalgebra([Y, Z])
568
603
  sage: S2.basis()
569
- Family (Y, Z)
604
+ Finite family {'Y': Y, 'Z': Z}
570
605
  sage: S2(2*Y + 9*Z).to_vector()
571
606
  (0, 2, 9)
572
607
 
@@ -601,17 +636,18 @@ cdef class LieSubalgebraElementWrapper(LieAlgebraElementWrapper):
601
636
  sage: L.<X,Y,Z> = LieAlgebra(ZZ, {('X','Y'): {'Z': 3}})
602
637
  sage: S = L.subalgebra([X, Y])
603
638
  sage: S(2*Y + 9*Z).monomial_coefficients()
604
- {1: 2, 2: 3}
639
+ {'Y': 2, 'Z': 3}
605
640
  sage: S2 = L.subalgebra([Y, Z])
606
641
  sage: S2(2*Y + 9*Z).monomial_coefficients()
607
- {0: 2, 1: 9}
642
+ {'Y': 2, 'Z': 9}
608
643
  """
609
644
  cdef Py_ssize_t k
645
+ indices = self._parent._indices
610
646
  if self._monomial_coefficients is None:
611
- sm = self.parent().module()
647
+ sm = self._parent.module()
612
648
  v = sm.coordinate_vector(self.to_vector())
613
- self._monomial_coefficients = {k: v[k] for k in range(len(v))
614
- if v[k]}
649
+ self._monomial_coefficients = {indices[k]: v[k]
650
+ for k in range(len(v)) if v[k]}
615
651
  if copy:
616
652
  return dict(self._monomial_coefficients)
617
653
  return self._monomial_coefficients
@@ -627,13 +663,13 @@ cdef class LieSubalgebraElementWrapper(LieAlgebraElementWrapper):
627
663
  sage: a = S(2*Y + 12*Z)
628
664
  sage: b = S(X + 2*Y)
629
665
  sage: (a + b).monomial_coefficients()
630
- {0: 1, 1: 4, 2: 4}
666
+ {'X': 1, 'Y': 4, 'Z': 4}
631
667
  sage: a.monomial_coefficients() # We set a._monomial_coefficients
632
- {1: 2, 2: 4}
668
+ {'Y': 2, 'Z': 4}
633
669
  sage: b.monomial_coefficients() # We set b._monomial_coefficients
634
- {0: 1, 1: 2}
670
+ {'X': 1, 'Y': 2}
635
671
  sage: (a + b).monomial_coefficients() # This is now computed from a and b
636
- {0: 1, 1: 4, 2: 4}
672
+ {'X': 1, 'Y': 4, 'Z': 4}
637
673
  """
638
674
  cdef LieSubalgebraElementWrapper ret, other = <LieSubalgebraElementWrapper> right
639
675
  ret = type(self)(self._parent, self.value + other.value)
@@ -653,13 +689,13 @@ cdef class LieSubalgebraElementWrapper(LieAlgebraElementWrapper):
653
689
  sage: a = S(2*Y + 12*Z)
654
690
  sage: b = S(X + 2*Y)
655
691
  sage: (a - b).monomial_coefficients()
656
- {0: -1, 2: 4}
692
+ {'X': -1, 'Z': 4}
657
693
  sage: a.monomial_coefficients() # We set a._monomial_coefficients
658
- {1: 2, 2: 4}
694
+ {'Y': 2, 'Z': 4}
659
695
  sage: b.monomial_coefficients() # We set b._monomial_coefficients
660
- {0: 1, 1: 2}
696
+ {'X': 1, 'Y': 2}
661
697
  sage: (a - b).monomial_coefficients() # This is now computed from a and b
662
- {0: -1, 2: 4}
698
+ {'X': -1, 'Z': 4}
663
699
  """
664
700
  cdef LieSubalgebraElementWrapper ret, other = <LieSubalgebraElementWrapper> right
665
701
  ret = type(self)(self._parent, self.value - other.value)
@@ -678,11 +714,11 @@ cdef class LieSubalgebraElementWrapper(LieAlgebraElementWrapper):
678
714
  sage: S = L.subalgebra([X, Y])
679
715
  sage: a = S(2*Y + 12*Z)
680
716
  sage: (2*a).monomial_coefficients()
681
- {1: 4, 2: 8}
717
+ {'Y': 4, 'Z': 8}
682
718
  sage: a.monomial_coefficients() # We set a._monomial_coefficients
683
- {1: 2, 2: 4}
719
+ {'Y': 2, 'Z': 4}
684
720
  sage: (2*a).monomial_coefficients() # This is now computed from a
685
- {1: 4, 2: 8}
721
+ {'Y': 4, 'Z': 8}
686
722
  """
687
723
  # This was copied and IDK if it still applies (TCS):
688
724
  # With the current design, the coercion model does not have
@@ -972,6 +1008,7 @@ cdef class UntwistedAffineLieAlgebraElement(Element):
972
1008
 
973
1009
  EXAMPLES::
974
1010
 
1011
+ sage: # needs sage.graphs
975
1012
  sage: L = lie_algebras.Affine(QQ, ['B', 3, 1])
976
1013
  sage: elt = L.an_element()
977
1014
  sage: elt._repr_generic(str, str, lambda t: "T^{}".format(t), '.', '(x)')
@@ -23,6 +23,7 @@ from sage.algebras.lie_algebras.subalgebra import LieSubalgebra_finite_dimension
23
23
  from sage.categories.homset import Hom
24
24
  from sage.categories.lie_algebras import LieAlgebras
25
25
  from sage.categories.morphism import SetMorphism
26
+ from sage.structure.element import Element
26
27
  from sage.structure.indexed_generators import standardize_names_index_set
27
28
 
28
29
 
@@ -161,7 +162,7 @@ class LieQuotient_finite_dimensional_with_basis(LieAlgebraWithStructureCoefficie
161
162
  sage: L.<c,b,a> = LieAlgebra(QQ, abelian=True)
162
163
  sage: I2 = L.ideal([a+b, a+c], order=sorted)
163
164
  sage: I2.basis()
164
- Family (b + a, c + a)
165
+ Finite family {'b': b + a, 'c': c + a}
165
166
  sage: Q = L.quotient(I2)
166
167
  sage: Q.basis()
167
168
  Finite family {'a': a}
@@ -174,40 +175,44 @@ class LieQuotient_finite_dimensional_with_basis(LieAlgebraWithStructureCoefficie
174
175
  2
175
176
  sage: TestSuite(K).run()
176
177
  """
177
-
178
178
  @staticmethod
179
- def __classcall_private__(cls, I, ambient=None, names=None,
180
- index_set=None, category=None):
179
+ def __classcall_private__(cls, ambient, I, names=None, index_set=None,
180
+ index_set_mapping=None, category=None):
181
181
  r"""
182
182
  Normalize input to ensure a unique representation.
183
183
 
184
- EXAMPLES:
185
-
186
- Specifying the ambient Lie algebra is not necessary::
184
+ EXAMPLES::
187
185
 
188
186
  sage: from sage.algebras.lie_algebras.quotient import LieQuotient_finite_dimensional_with_basis
189
187
  sage: L.<X,Y> = LieAlgebra(QQ, {('X','Y'): {'X': 1}})
190
- sage: Q1 = LieQuotient_finite_dimensional_with_basis(X, ambient=L)
191
- sage: Q2 = LieQuotient_finite_dimensional_with_basis(X)
192
- sage: Q1 is Q2
193
- True
188
+ sage: Q1 = LieQuotient_finite_dimensional_with_basis(L, X)
194
189
 
195
190
  Variable names are extracted from the ambient Lie algebra by default::
196
191
 
192
+ sage: Q2 = LieQuotient_finite_dimensional_with_basis(L, X, index_set=['Y'])
193
+ sage: Q1 is Q2
194
+ True
197
195
  sage: Q3 = L.quotient(X, names=['Y'])
198
196
  sage: Q1 is Q3
199
197
  True
198
+
199
+ Check that quotients are properly constructed for ideals of
200
+ subalgebras (:issue:`40137`)::
201
+
202
+ sage: L.<a,b,c,d> = LieAlgebra(QQ, {('a','b'): {'c': 1, 'd':1}, ('a','c'): {'b':1}})
203
+ sage: A = L.ideal([b,c,d])
204
+ sage: B = L.ideal([c+d])
205
+ sage: Q = A.quotient(B); Q
206
+ Lie algebra quotient L/I of dimension 1 over Rational Field where
207
+ L: Ideal (b, c, d) of Lie algebra on 4 generators (a, b, c, d) over Rational Field
208
+ I: Ideal (b, c + d)
209
+ sage: Q.dimension() == A.dimension() - B.dimension()
210
+ True
200
211
  """
201
212
  if not isinstance(I, LieSubalgebra_finite_dimensional_with_basis):
202
- # assume I is an element or list of elements of some lie algebra
203
- if ambient is None:
204
- if not isinstance(I, (list, tuple)):
205
- ambient = I.parent()
206
- else:
207
- ambient = I[0].parent()
208
213
  I = ambient.ideal(I)
209
- if ambient is None:
210
- ambient = I.ambient()
214
+ if I.is_ideal(ambient):
215
+ I = ambient.ideal(I)
211
216
 
212
217
  if not ambient.base_ring().is_field():
213
218
  raise NotImplementedError("quotients over non-fields "
@@ -216,12 +221,16 @@ class LieQuotient_finite_dimensional_with_basis(LieAlgebraWithStructureCoefficie
216
221
  # extract an index set from a complementary basis to the ideal
217
222
  I_supp = [X.leading_support() for X in I.leading_monomials()]
218
223
  inv = ambient.basis().inverse_family()
219
- sorted_indices = [inv[X] for X in ambient.basis()]
220
- index_set = [i for i in sorted_indices if i not in I_supp]
224
+ IA = I.ambient()
225
+ B = ambient.basis()
226
+ if index_set_mapping is None:
227
+ index_set_mapping = [(IA(B[k]).leading_support(key=I._order), k) for k in B.keys()]
228
+ if index_set is None:
229
+ index_set = [i[0] for i in index_set_mapping if i[0] not in I_supp]
221
230
 
222
231
  if names is None:
223
232
  try:
224
- amb_names = dict(zip(sorted_indices, ambient.variable_names()))
233
+ amb_names = dict(zip([i[1] for i in index_set_mapping], ambient.variable_names()))
225
234
  names = [amb_names[i] for i in index_set]
226
235
  except (ValueError, KeyError):
227
236
  # ambient has not assigned variable names
@@ -234,16 +243,16 @@ class LieQuotient_finite_dimensional_with_basis(LieAlgebraWithStructureCoefficie
234
243
  names = ['%s_%d' % (names, k + 1)
235
244
  for k in range(len(index_set))]
236
245
  names, index_set = standardize_names_index_set(names, index_set)
246
+ index_set_mapping = tuple([i for i in index_set_mapping if i[0] not in I_supp])
237
247
 
238
248
  cat = LieAlgebras(ambient.base_ring()).FiniteDimensional().WithBasis()
239
249
  if ambient in LieAlgebras(ambient.base_ring()).Nilpotent():
240
250
  cat = cat.Nilpotent()
241
251
  category = cat.Subquotients().or_subcategory(category)
252
+ return super().__classcall__(cls, ambient, I, names, index_set,
253
+ index_set_mapping, category=category)
242
254
 
243
- return super().__classcall__(cls, I, ambient, names, index_set,
244
- category=category)
245
-
246
- def __init__(self, I, L, names, index_set, category=None):
255
+ def __init__(self, L, I, names, index_set, index_set_mapping, category=None):
247
256
  r"""
248
257
  Initialize ``self``.
249
258
 
@@ -257,8 +266,10 @@ class LieQuotient_finite_dimensional_with_basis(LieAlgebraWithStructureCoefficie
257
266
  sage: TestSuite(K).run()
258
267
  """
259
268
  B = L.basis()
260
- sm = L.module().submodule_with_basis([I.reduce(B[i]).to_vector()
261
- for i in index_set])
269
+ IA = I.ambient()
270
+ self._index_set_mapping = dict(index_set_mapping)
271
+ sm = L.module().submodule_with_basis([I.reduce(B[k]).to_vector()
272
+ for k in self._index_set_mapping.values()])
262
273
  SB = [L.from_vector(b) for b in sm.basis()]
263
274
 
264
275
  # compute and normalize structural coefficients for the quotient
@@ -370,7 +381,7 @@ class LieQuotient_finite_dimensional_with_basis(LieAlgebraWithStructureCoefficie
370
381
  """
371
382
  L = self.ambient()
372
383
  B = L.basis()
373
- return L.sum(ck * B[ik] for ik, ck in X)
384
+ return L.sum(ck * B[self._index_set_mapping[ik]] for ik, ck in X)
374
385
 
375
386
  def retract(self, X):
376
387
  r"""