passagemath-modules 10.6.31rc3__cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.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 (806) hide show
  1. passagemath_modules-10.6.31rc3.dist-info/METADATA +281 -0
  2. passagemath_modules-10.6.31rc3.dist-info/RECORD +806 -0
  3. passagemath_modules-10.6.31rc3.dist-info/WHEEL +6 -0
  4. passagemath_modules-10.6.31rc3.dist-info/top_level.txt +2 -0
  5. passagemath_modules.libs/libgfortran-e1b7dfc8.so.5.0.0 +0 -0
  6. passagemath_modules.libs/libgmp-93ebf16a.so.10.5.0 +0 -0
  7. passagemath_modules.libs/libgsl-e3525837.so.28.0.0 +0 -0
  8. passagemath_modules.libs/libmpc-c5c421e1.so.3.3.1 +0 -0
  9. passagemath_modules.libs/libmpfr-e0f11cf3.so.6.2.1 +0 -0
  10. passagemath_modules.libs/libopenblasp-r0-4c5b64b1.3.29.so +0 -0
  11. sage/algebras/all__sagemath_modules.py +20 -0
  12. sage/algebras/catalog.py +148 -0
  13. sage/algebras/clifford_algebra.py +3107 -0
  14. sage/algebras/clifford_algebra_element.cpython-314-aarch64-linux-gnu.so +0 -0
  15. sage/algebras/clifford_algebra_element.pxd +16 -0
  16. sage/algebras/clifford_algebra_element.pyx +997 -0
  17. sage/algebras/commutative_dga.py +4252 -0
  18. sage/algebras/exterior_algebra_groebner.cpython-314-aarch64-linux-gnu.so +0 -0
  19. sage/algebras/exterior_algebra_groebner.pxd +55 -0
  20. sage/algebras/exterior_algebra_groebner.pyx +727 -0
  21. sage/algebras/finite_dimensional_algebras/all.py +2 -0
  22. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra.py +1029 -0
  23. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.cpython-314-aarch64-linux-gnu.so +0 -0
  24. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pxd +12 -0
  25. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pyx +706 -0
  26. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_ideal.py +196 -0
  27. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_morphism.py +255 -0
  28. sage/algebras/finite_gca.py +528 -0
  29. sage/algebras/group_algebra.py +232 -0
  30. sage/algebras/lie_algebras/abelian.py +197 -0
  31. sage/algebras/lie_algebras/affine_lie_algebra.py +1213 -0
  32. sage/algebras/lie_algebras/all.py +25 -0
  33. sage/algebras/lie_algebras/all__sagemath_modules.py +1 -0
  34. sage/algebras/lie_algebras/bch.py +177 -0
  35. sage/algebras/lie_algebras/bgg_dual_module.py +1184 -0
  36. sage/algebras/lie_algebras/bgg_resolution.py +232 -0
  37. sage/algebras/lie_algebras/center_uea.py +767 -0
  38. sage/algebras/lie_algebras/classical_lie_algebra.py +2516 -0
  39. sage/algebras/lie_algebras/examples.py +683 -0
  40. sage/algebras/lie_algebras/free_lie_algebra.py +973 -0
  41. sage/algebras/lie_algebras/heisenberg.py +820 -0
  42. sage/algebras/lie_algebras/lie_algebra.py +1562 -0
  43. sage/algebras/lie_algebras/lie_algebra_element.cpython-314-aarch64-linux-gnu.so +0 -0
  44. sage/algebras/lie_algebras/lie_algebra_element.pxd +68 -0
  45. sage/algebras/lie_algebras/lie_algebra_element.pyx +2122 -0
  46. sage/algebras/lie_algebras/morphism.py +661 -0
  47. sage/algebras/lie_algebras/nilpotent_lie_algebra.py +457 -0
  48. sage/algebras/lie_algebras/onsager.py +1324 -0
  49. sage/algebras/lie_algebras/poincare_birkhoff_witt.py +816 -0
  50. sage/algebras/lie_algebras/quotient.py +462 -0
  51. sage/algebras/lie_algebras/rank_two_heisenberg_virasoro.py +355 -0
  52. sage/algebras/lie_algebras/representation.py +1040 -0
  53. sage/algebras/lie_algebras/structure_coefficients.py +459 -0
  54. sage/algebras/lie_algebras/subalgebra.py +967 -0
  55. sage/algebras/lie_algebras/symplectic_derivation.py +289 -0
  56. sage/algebras/lie_algebras/verma_module.py +1630 -0
  57. sage/algebras/lie_algebras/virasoro.py +1186 -0
  58. sage/algebras/octonion_algebra.cpython-314-aarch64-linux-gnu.so +0 -0
  59. sage/algebras/octonion_algebra.pxd +20 -0
  60. sage/algebras/octonion_algebra.pyx +987 -0
  61. sage/algebras/orlik_solomon.py +907 -0
  62. sage/algebras/orlik_terao.py +779 -0
  63. sage/algebras/steenrod/all.py +7 -0
  64. sage/algebras/steenrod/steenrod_algebra.py +4258 -0
  65. sage/algebras/steenrod/steenrod_algebra_bases.py +1179 -0
  66. sage/algebras/steenrod/steenrod_algebra_misc.py +1167 -0
  67. sage/algebras/steenrod/steenrod_algebra_mult.py +954 -0
  68. sage/algebras/weyl_algebra.py +1126 -0
  69. sage/all__sagemath_modules.py +62 -0
  70. sage/calculus/all__sagemath_modules.py +19 -0
  71. sage/calculus/expr.py +205 -0
  72. sage/calculus/integration.cpython-314-aarch64-linux-gnu.so +0 -0
  73. sage/calculus/integration.pyx +698 -0
  74. sage/calculus/interpolation.cpython-314-aarch64-linux-gnu.so +0 -0
  75. sage/calculus/interpolation.pxd +13 -0
  76. sage/calculus/interpolation.pyx +387 -0
  77. sage/calculus/interpolators.cpython-314-aarch64-linux-gnu.so +0 -0
  78. sage/calculus/interpolators.pyx +326 -0
  79. sage/calculus/ode.cpython-314-aarch64-linux-gnu.so +0 -0
  80. sage/calculus/ode.pxd +5 -0
  81. sage/calculus/ode.pyx +610 -0
  82. sage/calculus/riemann.cpython-314-aarch64-linux-gnu.so +0 -0
  83. sage/calculus/riemann.pyx +1521 -0
  84. sage/calculus/test_sympy.py +201 -0
  85. sage/calculus/transforms/all.py +7 -0
  86. sage/calculus/transforms/dft.py +844 -0
  87. sage/calculus/transforms/dwt.cpython-314-aarch64-linux-gnu.so +0 -0
  88. sage/calculus/transforms/dwt.pxd +7 -0
  89. sage/calculus/transforms/dwt.pyx +160 -0
  90. sage/calculus/transforms/fft.cpython-314-aarch64-linux-gnu.so +0 -0
  91. sage/calculus/transforms/fft.pxd +12 -0
  92. sage/calculus/transforms/fft.pyx +487 -0
  93. sage/calculus/wester.py +662 -0
  94. sage/coding/abstract_code.py +1108 -0
  95. sage/coding/ag_code.py +868 -0
  96. sage/coding/ag_code_decoders.cpython-314-aarch64-linux-gnu.so +0 -0
  97. sage/coding/ag_code_decoders.pyx +2639 -0
  98. sage/coding/all.py +15 -0
  99. sage/coding/bch_code.py +494 -0
  100. sage/coding/binary_code.cpython-314-aarch64-linux-gnu.so +0 -0
  101. sage/coding/binary_code.pxd +124 -0
  102. sage/coding/binary_code.pyx +4139 -0
  103. sage/coding/bounds_catalog.py +43 -0
  104. sage/coding/channel.py +819 -0
  105. sage/coding/channels_catalog.py +29 -0
  106. sage/coding/code_bounds.py +755 -0
  107. sage/coding/code_constructions.py +804 -0
  108. sage/coding/codes_catalog.py +111 -0
  109. sage/coding/cyclic_code.py +1329 -0
  110. sage/coding/databases.py +316 -0
  111. sage/coding/decoder.py +373 -0
  112. sage/coding/decoders_catalog.py +88 -0
  113. sage/coding/delsarte_bounds.py +709 -0
  114. sage/coding/encoder.py +390 -0
  115. sage/coding/encoders_catalog.py +64 -0
  116. sage/coding/extended_code.py +468 -0
  117. sage/coding/gabidulin_code.py +1058 -0
  118. sage/coding/golay_code.py +404 -0
  119. sage/coding/goppa_code.py +441 -0
  120. sage/coding/grs_code.py +2371 -0
  121. sage/coding/guava.py +107 -0
  122. sage/coding/guruswami_sudan/all.py +1 -0
  123. sage/coding/guruswami_sudan/gs_decoder.py +897 -0
  124. sage/coding/guruswami_sudan/interpolation.py +409 -0
  125. sage/coding/guruswami_sudan/utils.py +176 -0
  126. sage/coding/hamming_code.py +176 -0
  127. sage/coding/information_set_decoder.py +1032 -0
  128. sage/coding/kasami_codes.cpython-314-aarch64-linux-gnu.so +0 -0
  129. sage/coding/kasami_codes.pyx +351 -0
  130. sage/coding/linear_code.py +3067 -0
  131. sage/coding/linear_code_no_metric.py +1354 -0
  132. sage/coding/linear_rank_metric.py +961 -0
  133. sage/coding/parity_check_code.py +353 -0
  134. sage/coding/punctured_code.py +719 -0
  135. sage/coding/reed_muller_code.py +999 -0
  136. sage/coding/self_dual_codes.py +942 -0
  137. sage/coding/source_coding/all.py +2 -0
  138. sage/coding/source_coding/huffman.py +553 -0
  139. sage/coding/subfield_subcode.py +423 -0
  140. sage/coding/two_weight_db.py +399 -0
  141. sage/combinat/all__sagemath_modules.py +7 -0
  142. sage/combinat/cartesian_product.py +347 -0
  143. sage/combinat/family.py +11 -0
  144. sage/combinat/free_module.py +1977 -0
  145. sage/combinat/root_system/all.py +147 -0
  146. sage/combinat/root_system/ambient_space.py +527 -0
  147. sage/combinat/root_system/associahedron.py +471 -0
  148. sage/combinat/root_system/braid_move_calculator.py +143 -0
  149. sage/combinat/root_system/braid_orbit.cpython-314-aarch64-linux-gnu.so +0 -0
  150. sage/combinat/root_system/braid_orbit.pyx +144 -0
  151. sage/combinat/root_system/branching_rules.py +2301 -0
  152. sage/combinat/root_system/cartan_matrix.py +1245 -0
  153. sage/combinat/root_system/cartan_type.py +3069 -0
  154. sage/combinat/root_system/coxeter_group.py +162 -0
  155. sage/combinat/root_system/coxeter_matrix.py +1261 -0
  156. sage/combinat/root_system/coxeter_type.py +681 -0
  157. sage/combinat/root_system/dynkin_diagram.py +900 -0
  158. sage/combinat/root_system/extended_affine_weyl_group.py +2993 -0
  159. sage/combinat/root_system/fundamental_group.py +795 -0
  160. sage/combinat/root_system/hecke_algebra_representation.py +1203 -0
  161. sage/combinat/root_system/integrable_representations.py +1227 -0
  162. sage/combinat/root_system/non_symmetric_macdonald_polynomials.py +1965 -0
  163. sage/combinat/root_system/pieri_factors.py +1147 -0
  164. sage/combinat/root_system/plot.py +1615 -0
  165. sage/combinat/root_system/root_lattice_realization_algebras.py +1214 -0
  166. sage/combinat/root_system/root_lattice_realizations.py +4628 -0
  167. sage/combinat/root_system/root_space.py +487 -0
  168. sage/combinat/root_system/root_system.py +882 -0
  169. sage/combinat/root_system/type_A.py +348 -0
  170. sage/combinat/root_system/type_A_affine.py +227 -0
  171. sage/combinat/root_system/type_A_infinity.py +241 -0
  172. sage/combinat/root_system/type_B.py +347 -0
  173. sage/combinat/root_system/type_BC_affine.py +287 -0
  174. sage/combinat/root_system/type_B_affine.py +216 -0
  175. sage/combinat/root_system/type_C.py +317 -0
  176. sage/combinat/root_system/type_C_affine.py +188 -0
  177. sage/combinat/root_system/type_D.py +357 -0
  178. sage/combinat/root_system/type_D_affine.py +208 -0
  179. sage/combinat/root_system/type_E.py +641 -0
  180. sage/combinat/root_system/type_E_affine.py +231 -0
  181. sage/combinat/root_system/type_F.py +387 -0
  182. sage/combinat/root_system/type_F_affine.py +137 -0
  183. sage/combinat/root_system/type_G.py +293 -0
  184. sage/combinat/root_system/type_G_affine.py +132 -0
  185. sage/combinat/root_system/type_H.py +105 -0
  186. sage/combinat/root_system/type_I.py +110 -0
  187. sage/combinat/root_system/type_Q.py +150 -0
  188. sage/combinat/root_system/type_affine.py +509 -0
  189. sage/combinat/root_system/type_dual.py +704 -0
  190. sage/combinat/root_system/type_folded.py +301 -0
  191. sage/combinat/root_system/type_marked.py +748 -0
  192. sage/combinat/root_system/type_reducible.py +601 -0
  193. sage/combinat/root_system/type_relabel.py +730 -0
  194. sage/combinat/root_system/type_super_A.py +837 -0
  195. sage/combinat/root_system/weight_lattice_realizations.py +1188 -0
  196. sage/combinat/root_system/weight_space.py +639 -0
  197. sage/combinat/root_system/weyl_characters.py +2238 -0
  198. sage/crypto/__init__.py +4 -0
  199. sage/crypto/all.py +28 -0
  200. sage/crypto/block_cipher/all.py +7 -0
  201. sage/crypto/block_cipher/des.py +1065 -0
  202. sage/crypto/block_cipher/miniaes.py +2171 -0
  203. sage/crypto/block_cipher/present.py +909 -0
  204. sage/crypto/block_cipher/sdes.py +1527 -0
  205. sage/crypto/boolean_function.cpython-314-aarch64-linux-gnu.so +0 -0
  206. sage/crypto/boolean_function.pxd +10 -0
  207. sage/crypto/boolean_function.pyx +1487 -0
  208. sage/crypto/cipher.py +78 -0
  209. sage/crypto/classical.py +3668 -0
  210. sage/crypto/classical_cipher.py +569 -0
  211. sage/crypto/cryptosystem.py +387 -0
  212. sage/crypto/key_exchange/all.py +7 -0
  213. sage/crypto/key_exchange/catalog.py +24 -0
  214. sage/crypto/key_exchange/diffie_hellman.py +323 -0
  215. sage/crypto/key_exchange/key_exchange_scheme.py +107 -0
  216. sage/crypto/lattice.py +312 -0
  217. sage/crypto/lfsr.py +295 -0
  218. sage/crypto/lwe.py +840 -0
  219. sage/crypto/mq/__init__.py +4 -0
  220. sage/crypto/mq/mpolynomialsystemgenerator.py +204 -0
  221. sage/crypto/mq/rijndael_gf.py +2345 -0
  222. sage/crypto/mq/sbox.py +7 -0
  223. sage/crypto/mq/sr.py +3344 -0
  224. sage/crypto/public_key/all.py +5 -0
  225. sage/crypto/public_key/blum_goldwasser.py +776 -0
  226. sage/crypto/sbox.cpython-314-aarch64-linux-gnu.so +0 -0
  227. sage/crypto/sbox.pyx +2090 -0
  228. sage/crypto/sboxes.py +2090 -0
  229. sage/crypto/stream.py +390 -0
  230. sage/crypto/stream_cipher.py +297 -0
  231. sage/crypto/util.py +519 -0
  232. sage/ext/all__sagemath_modules.py +1 -0
  233. sage/ext/interpreters/__init__.py +1 -0
  234. sage/ext/interpreters/all__sagemath_modules.py +2 -0
  235. sage/ext/interpreters/wrapper_cc.cpython-314-aarch64-linux-gnu.so +0 -0
  236. sage/ext/interpreters/wrapper_cc.pxd +30 -0
  237. sage/ext/interpreters/wrapper_cc.pyx +252 -0
  238. sage/ext/interpreters/wrapper_cdf.cpython-314-aarch64-linux-gnu.so +0 -0
  239. sage/ext/interpreters/wrapper_cdf.pxd +26 -0
  240. sage/ext/interpreters/wrapper_cdf.pyx +245 -0
  241. sage/ext/interpreters/wrapper_rdf.cpython-314-aarch64-linux-gnu.so +0 -0
  242. sage/ext/interpreters/wrapper_rdf.pxd +23 -0
  243. sage/ext/interpreters/wrapper_rdf.pyx +221 -0
  244. sage/ext/interpreters/wrapper_rr.cpython-314-aarch64-linux-gnu.so +0 -0
  245. sage/ext/interpreters/wrapper_rr.pxd +28 -0
  246. sage/ext/interpreters/wrapper_rr.pyx +335 -0
  247. sage/geometry/all__sagemath_modules.py +5 -0
  248. sage/geometry/toric_lattice.py +1745 -0
  249. sage/geometry/toric_lattice_element.cpython-314-aarch64-linux-gnu.so +0 -0
  250. sage/geometry/toric_lattice_element.pyx +432 -0
  251. sage/groups/abelian_gps/abelian_group.py +1925 -0
  252. sage/groups/abelian_gps/abelian_group_element.py +164 -0
  253. sage/groups/abelian_gps/all__sagemath_modules.py +5 -0
  254. sage/groups/abelian_gps/dual_abelian_group.py +421 -0
  255. sage/groups/abelian_gps/dual_abelian_group_element.py +179 -0
  256. sage/groups/abelian_gps/element_base.py +341 -0
  257. sage/groups/abelian_gps/values.py +488 -0
  258. sage/groups/additive_abelian/additive_abelian_group.py +476 -0
  259. sage/groups/additive_abelian/additive_abelian_wrapper.py +857 -0
  260. sage/groups/additive_abelian/all.py +4 -0
  261. sage/groups/additive_abelian/qmodnz.py +231 -0
  262. sage/groups/additive_abelian/qmodnz_element.py +349 -0
  263. sage/groups/affine_gps/affine_group.py +535 -0
  264. sage/groups/affine_gps/all.py +1 -0
  265. sage/groups/affine_gps/catalog.py +17 -0
  266. sage/groups/affine_gps/euclidean_group.py +246 -0
  267. sage/groups/affine_gps/group_element.py +562 -0
  268. sage/groups/all__sagemath_modules.py +12 -0
  269. sage/groups/galois_group.py +479 -0
  270. sage/groups/matrix_gps/all.py +4 -0
  271. sage/groups/matrix_gps/all__sagemath_modules.py +13 -0
  272. sage/groups/matrix_gps/catalog.py +26 -0
  273. sage/groups/matrix_gps/coxeter_group.py +927 -0
  274. sage/groups/matrix_gps/finitely_generated.py +487 -0
  275. sage/groups/matrix_gps/group_element.cpython-314-aarch64-linux-gnu.so +0 -0
  276. sage/groups/matrix_gps/group_element.pxd +11 -0
  277. sage/groups/matrix_gps/group_element.pyx +431 -0
  278. sage/groups/matrix_gps/linear.py +440 -0
  279. sage/groups/matrix_gps/matrix_group.py +617 -0
  280. sage/groups/matrix_gps/named_group.py +296 -0
  281. sage/groups/matrix_gps/orthogonal.py +544 -0
  282. sage/groups/matrix_gps/symplectic.py +251 -0
  283. sage/groups/matrix_gps/unitary.py +436 -0
  284. sage/groups/misc_gps/all__sagemath_modules.py +1 -0
  285. sage/groups/misc_gps/argument_groups.py +1905 -0
  286. sage/groups/misc_gps/imaginary_groups.py +479 -0
  287. sage/groups/perm_gps/all__sagemath_modules.py +1 -0
  288. sage/groups/perm_gps/partn_ref/all__sagemath_modules.py +1 -0
  289. sage/groups/perm_gps/partn_ref/refinement_binary.cpython-314-aarch64-linux-gnu.so +0 -0
  290. sage/groups/perm_gps/partn_ref/refinement_binary.pxd +41 -0
  291. sage/groups/perm_gps/partn_ref/refinement_binary.pyx +1167 -0
  292. sage/groups/perm_gps/partn_ref/refinement_matrices.cpython-314-aarch64-linux-gnu.so +0 -0
  293. sage/groups/perm_gps/partn_ref/refinement_matrices.pxd +31 -0
  294. sage/groups/perm_gps/partn_ref/refinement_matrices.pyx +385 -0
  295. sage/homology/algebraic_topological_model.py +595 -0
  296. sage/homology/all.py +2 -0
  297. sage/homology/all__sagemath_modules.py +8 -0
  298. sage/homology/chain_complex.py +2148 -0
  299. sage/homology/chain_complex_homspace.py +165 -0
  300. sage/homology/chain_complex_morphism.py +629 -0
  301. sage/homology/chain_homotopy.py +604 -0
  302. sage/homology/chains.py +653 -0
  303. sage/homology/free_resolution.py +923 -0
  304. sage/homology/graded_resolution.py +567 -0
  305. sage/homology/hochschild_complex.py +756 -0
  306. sage/homology/homology_group.py +188 -0
  307. sage/homology/homology_morphism.py +422 -0
  308. sage/homology/homology_vector_space_with_basis.py +1454 -0
  309. sage/homology/koszul_complex.py +169 -0
  310. sage/homology/matrix_utils.py +205 -0
  311. sage/libs/all__sagemath_modules.py +1 -0
  312. sage/libs/gsl/__init__.py +1 -0
  313. sage/libs/gsl/airy.pxd +56 -0
  314. sage/libs/gsl/all.pxd +66 -0
  315. sage/libs/gsl/array.cpython-314-aarch64-linux-gnu.so +0 -0
  316. sage/libs/gsl/array.pxd +5 -0
  317. sage/libs/gsl/array.pyx +102 -0
  318. sage/libs/gsl/bessel.pxd +208 -0
  319. sage/libs/gsl/blas.pxd +116 -0
  320. sage/libs/gsl/blas_types.pxd +34 -0
  321. sage/libs/gsl/block.pxd +52 -0
  322. sage/libs/gsl/chebyshev.pxd +37 -0
  323. sage/libs/gsl/clausen.pxd +12 -0
  324. sage/libs/gsl/combination.pxd +47 -0
  325. sage/libs/gsl/complex.pxd +151 -0
  326. sage/libs/gsl/coulomb.pxd +30 -0
  327. sage/libs/gsl/coupling.pxd +21 -0
  328. sage/libs/gsl/dawson.pxd +12 -0
  329. sage/libs/gsl/debye.pxd +24 -0
  330. sage/libs/gsl/dilog.pxd +14 -0
  331. sage/libs/gsl/eigen.pxd +46 -0
  332. sage/libs/gsl/elementary.pxd +12 -0
  333. sage/libs/gsl/ellint.pxd +48 -0
  334. sage/libs/gsl/elljac.pxd +8 -0
  335. sage/libs/gsl/erf.pxd +32 -0
  336. sage/libs/gsl/errno.pxd +26 -0
  337. sage/libs/gsl/exp.pxd +44 -0
  338. sage/libs/gsl/expint.pxd +44 -0
  339. sage/libs/gsl/fermi_dirac.pxd +44 -0
  340. sage/libs/gsl/fft.pxd +121 -0
  341. sage/libs/gsl/fit.pxd +50 -0
  342. sage/libs/gsl/gamma.pxd +94 -0
  343. sage/libs/gsl/gegenbauer.pxd +26 -0
  344. sage/libs/gsl/histogram.pxd +176 -0
  345. sage/libs/gsl/hyperg.pxd +52 -0
  346. sage/libs/gsl/integration.pxd +69 -0
  347. sage/libs/gsl/interp.pxd +109 -0
  348. sage/libs/gsl/laguerre.pxd +24 -0
  349. sage/libs/gsl/lambert.pxd +16 -0
  350. sage/libs/gsl/legendre.pxd +90 -0
  351. sage/libs/gsl/linalg.pxd +185 -0
  352. sage/libs/gsl/log.pxd +26 -0
  353. sage/libs/gsl/math.pxd +43 -0
  354. sage/libs/gsl/matrix.pxd +143 -0
  355. sage/libs/gsl/matrix_complex.pxd +130 -0
  356. sage/libs/gsl/min.pxd +67 -0
  357. sage/libs/gsl/monte.pxd +56 -0
  358. sage/libs/gsl/ntuple.pxd +32 -0
  359. sage/libs/gsl/odeiv.pxd +70 -0
  360. sage/libs/gsl/permutation.pxd +78 -0
  361. sage/libs/gsl/poly.pxd +40 -0
  362. sage/libs/gsl/pow_int.pxd +12 -0
  363. sage/libs/gsl/psi.pxd +28 -0
  364. sage/libs/gsl/qrng.pxd +29 -0
  365. sage/libs/gsl/random.pxd +257 -0
  366. sage/libs/gsl/rng.pxd +100 -0
  367. sage/libs/gsl/roots.pxd +72 -0
  368. sage/libs/gsl/sort.pxd +36 -0
  369. sage/libs/gsl/statistics.pxd +59 -0
  370. sage/libs/gsl/sum.pxd +55 -0
  371. sage/libs/gsl/synchrotron.pxd +16 -0
  372. sage/libs/gsl/transport.pxd +24 -0
  373. sage/libs/gsl/trig.pxd +58 -0
  374. sage/libs/gsl/types.pxd +137 -0
  375. sage/libs/gsl/vector.pxd +101 -0
  376. sage/libs/gsl/vector_complex.pxd +83 -0
  377. sage/libs/gsl/wavelet.pxd +49 -0
  378. sage/libs/gsl/zeta.pxd +28 -0
  379. sage/libs/mpc/__init__.pxd +114 -0
  380. sage/libs/mpc/types.pxd +28 -0
  381. sage/libs/mpfr/__init__.pxd +299 -0
  382. sage/libs/mpfr/types.pxd +26 -0
  383. sage/libs/mpmath/__init__.py +1 -0
  384. sage/libs/mpmath/all.py +27 -0
  385. sage/libs/mpmath/all__sagemath_modules.py +1 -0
  386. sage/libs/mpmath/utils.cpython-314-aarch64-linux-gnu.so +0 -0
  387. sage/libs/mpmath/utils.pxd +4 -0
  388. sage/libs/mpmath/utils.pyx +319 -0
  389. sage/matrix/action.cpython-314-aarch64-linux-gnu.so +0 -0
  390. sage/matrix/action.pxd +26 -0
  391. sage/matrix/action.pyx +596 -0
  392. sage/matrix/all.py +9 -0
  393. sage/matrix/args.cpython-314-aarch64-linux-gnu.so +0 -0
  394. sage/matrix/args.pxd +144 -0
  395. sage/matrix/args.pyx +1668 -0
  396. sage/matrix/benchmark.py +1258 -0
  397. sage/matrix/berlekamp_massey.py +95 -0
  398. sage/matrix/compute_J_ideal.py +926 -0
  399. sage/matrix/constructor.cpython-314-aarch64-linux-gnu.so +0 -0
  400. sage/matrix/constructor.pyx +750 -0
  401. sage/matrix/docs.py +430 -0
  402. sage/matrix/echelon_matrix.cpython-314-aarch64-linux-gnu.so +0 -0
  403. sage/matrix/echelon_matrix.pyx +155 -0
  404. sage/matrix/matrix.pxd +2 -0
  405. sage/matrix/matrix0.cpython-314-aarch64-linux-gnu.so +0 -0
  406. sage/matrix/matrix0.pxd +68 -0
  407. sage/matrix/matrix0.pyx +6324 -0
  408. sage/matrix/matrix1.cpython-314-aarch64-linux-gnu.so +0 -0
  409. sage/matrix/matrix1.pxd +8 -0
  410. sage/matrix/matrix1.pyx +2851 -0
  411. sage/matrix/matrix2.cpython-314-aarch64-linux-gnu.so +0 -0
  412. sage/matrix/matrix2.pxd +25 -0
  413. sage/matrix/matrix2.pyx +20181 -0
  414. sage/matrix/matrix_cdv.cpython-314-aarch64-linux-gnu.so +0 -0
  415. sage/matrix/matrix_cdv.pxd +4 -0
  416. sage/matrix/matrix_cdv.pyx +93 -0
  417. sage/matrix/matrix_complex_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  418. sage/matrix/matrix_complex_double_dense.pxd +5 -0
  419. sage/matrix/matrix_complex_double_dense.pyx +98 -0
  420. sage/matrix/matrix_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  421. sage/matrix/matrix_dense.pxd +5 -0
  422. sage/matrix/matrix_dense.pyx +343 -0
  423. sage/matrix/matrix_domain_dense.pxd +5 -0
  424. sage/matrix/matrix_domain_sparse.pxd +5 -0
  425. sage/matrix/matrix_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  426. sage/matrix/matrix_double_dense.pxd +7 -0
  427. sage/matrix/matrix_double_dense.pyx +3906 -0
  428. sage/matrix/matrix_double_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  429. sage/matrix/matrix_double_sparse.pxd +6 -0
  430. sage/matrix/matrix_double_sparse.pyx +248 -0
  431. sage/matrix/matrix_generic_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  432. sage/matrix/matrix_generic_dense.pxd +7 -0
  433. sage/matrix/matrix_generic_dense.pyx +354 -0
  434. sage/matrix/matrix_generic_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  435. sage/matrix/matrix_generic_sparse.pxd +7 -0
  436. sage/matrix/matrix_generic_sparse.pyx +461 -0
  437. sage/matrix/matrix_laurent_mpolynomial_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  438. sage/matrix/matrix_laurent_mpolynomial_dense.pxd +5 -0
  439. sage/matrix/matrix_laurent_mpolynomial_dense.pyx +115 -0
  440. sage/matrix/matrix_misc.py +313 -0
  441. sage/matrix/matrix_numpy_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  442. sage/matrix/matrix_numpy_dense.pxd +14 -0
  443. sage/matrix/matrix_numpy_dense.pyx +450 -0
  444. sage/matrix/matrix_numpy_integer_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  445. sage/matrix/matrix_numpy_integer_dense.pxd +7 -0
  446. sage/matrix/matrix_numpy_integer_dense.pyx +59 -0
  447. sage/matrix/matrix_polynomial_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  448. sage/matrix/matrix_polynomial_dense.pxd +5 -0
  449. sage/matrix/matrix_polynomial_dense.pyx +5341 -0
  450. sage/matrix/matrix_real_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  451. sage/matrix/matrix_real_double_dense.pxd +7 -0
  452. sage/matrix/matrix_real_double_dense.pyx +122 -0
  453. sage/matrix/matrix_space.py +2848 -0
  454. sage/matrix/matrix_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  455. sage/matrix/matrix_sparse.pxd +5 -0
  456. sage/matrix/matrix_sparse.pyx +1222 -0
  457. sage/matrix/matrix_window.cpython-314-aarch64-linux-gnu.so +0 -0
  458. sage/matrix/matrix_window.pxd +37 -0
  459. sage/matrix/matrix_window.pyx +242 -0
  460. sage/matrix/misc_mpfr.cpython-314-aarch64-linux-gnu.so +0 -0
  461. sage/matrix/misc_mpfr.pyx +80 -0
  462. sage/matrix/operation_table.py +1182 -0
  463. sage/matrix/special.py +3666 -0
  464. sage/matrix/strassen.cpython-314-aarch64-linux-gnu.so +0 -0
  465. sage/matrix/strassen.pyx +851 -0
  466. sage/matrix/symplectic_basis.py +541 -0
  467. sage/matrix/template.pxd +6 -0
  468. sage/matrix/tests.py +71 -0
  469. sage/matroids/advanced.py +77 -0
  470. sage/matroids/all.py +13 -0
  471. sage/matroids/basis_exchange_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  472. sage/matroids/basis_exchange_matroid.pxd +96 -0
  473. sage/matroids/basis_exchange_matroid.pyx +2344 -0
  474. sage/matroids/basis_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  475. sage/matroids/basis_matroid.pxd +45 -0
  476. sage/matroids/basis_matroid.pyx +1217 -0
  477. sage/matroids/catalog.py +44 -0
  478. sage/matroids/chow_ring.py +473 -0
  479. sage/matroids/chow_ring_ideal.py +849 -0
  480. sage/matroids/circuit_closures_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  481. sage/matroids/circuit_closures_matroid.pxd +16 -0
  482. sage/matroids/circuit_closures_matroid.pyx +559 -0
  483. sage/matroids/circuits_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  484. sage/matroids/circuits_matroid.pxd +38 -0
  485. sage/matroids/circuits_matroid.pyx +947 -0
  486. sage/matroids/constructor.py +1086 -0
  487. sage/matroids/database_collections.py +365 -0
  488. sage/matroids/database_matroids.py +5338 -0
  489. sage/matroids/dual_matroid.py +583 -0
  490. sage/matroids/extension.cpython-314-aarch64-linux-gnu.so +0 -0
  491. sage/matroids/extension.pxd +34 -0
  492. sage/matroids/extension.pyx +519 -0
  493. sage/matroids/flats_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  494. sage/matroids/flats_matroid.pxd +28 -0
  495. sage/matroids/flats_matroid.pyx +715 -0
  496. sage/matroids/gammoid.py +600 -0
  497. sage/matroids/graphic_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  498. sage/matroids/graphic_matroid.pxd +39 -0
  499. sage/matroids/graphic_matroid.pyx +2024 -0
  500. sage/matroids/lean_matrix.cpython-314-aarch64-linux-gnu.so +0 -0
  501. sage/matroids/lean_matrix.pxd +126 -0
  502. sage/matroids/lean_matrix.pyx +3667 -0
  503. sage/matroids/linear_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  504. sage/matroids/linear_matroid.pxd +180 -0
  505. sage/matroids/linear_matroid.pyx +6649 -0
  506. sage/matroids/matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  507. sage/matroids/matroid.pxd +243 -0
  508. sage/matroids/matroid.pyx +8759 -0
  509. sage/matroids/matroids_catalog.py +190 -0
  510. sage/matroids/matroids_plot_helpers.py +890 -0
  511. sage/matroids/minor_matroid.py +480 -0
  512. sage/matroids/minorfix.h +9 -0
  513. sage/matroids/named_matroids.py +5 -0
  514. sage/matroids/rank_matroid.py +268 -0
  515. sage/matroids/set_system.cpython-314-aarch64-linux-gnu.so +0 -0
  516. sage/matroids/set_system.pxd +38 -0
  517. sage/matroids/set_system.pyx +800 -0
  518. sage/matroids/transversal_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  519. sage/matroids/transversal_matroid.pxd +14 -0
  520. sage/matroids/transversal_matroid.pyx +893 -0
  521. sage/matroids/union_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  522. sage/matroids/union_matroid.pxd +20 -0
  523. sage/matroids/union_matroid.pyx +331 -0
  524. sage/matroids/unpickling.cpython-314-aarch64-linux-gnu.so +0 -0
  525. sage/matroids/unpickling.pyx +843 -0
  526. sage/matroids/utilities.py +809 -0
  527. sage/misc/all__sagemath_modules.py +20 -0
  528. sage/misc/c3.cpython-314-aarch64-linux-gnu.so +0 -0
  529. sage/misc/c3.pyx +238 -0
  530. sage/misc/compat.py +87 -0
  531. sage/misc/element_with_label.py +173 -0
  532. sage/misc/func_persist.py +79 -0
  533. sage/misc/pickle_old.cpython-314-aarch64-linux-gnu.so +0 -0
  534. sage/misc/pickle_old.pyx +19 -0
  535. sage/misc/proof.py +7 -0
  536. sage/misc/replace_dot_all.py +472 -0
  537. sage/misc/sagedoc_conf.py +168 -0
  538. sage/misc/sphinxify.py +167 -0
  539. sage/misc/test_class_pickling.py +85 -0
  540. sage/modules/all.py +42 -0
  541. sage/modules/complex_double_vector.py +25 -0
  542. sage/modules/diamond_cutting.py +380 -0
  543. sage/modules/fg_pid/all.py +1 -0
  544. sage/modules/fg_pid/fgp_element.py +456 -0
  545. sage/modules/fg_pid/fgp_module.py +2091 -0
  546. sage/modules/fg_pid/fgp_morphism.py +550 -0
  547. sage/modules/filtered_vector_space.py +1271 -0
  548. sage/modules/finite_submodule_iter.cpython-314-aarch64-linux-gnu.so +0 -0
  549. sage/modules/finite_submodule_iter.pxd +27 -0
  550. sage/modules/finite_submodule_iter.pyx +452 -0
  551. sage/modules/fp_graded/all.py +1 -0
  552. sage/modules/fp_graded/element.py +346 -0
  553. sage/modules/fp_graded/free_element.py +298 -0
  554. sage/modules/fp_graded/free_homspace.py +53 -0
  555. sage/modules/fp_graded/free_module.py +1060 -0
  556. sage/modules/fp_graded/free_morphism.py +217 -0
  557. sage/modules/fp_graded/homspace.py +563 -0
  558. sage/modules/fp_graded/module.py +1340 -0
  559. sage/modules/fp_graded/morphism.py +1990 -0
  560. sage/modules/fp_graded/steenrod/all.py +1 -0
  561. sage/modules/fp_graded/steenrod/homspace.py +65 -0
  562. sage/modules/fp_graded/steenrod/module.py +477 -0
  563. sage/modules/fp_graded/steenrod/morphism.py +404 -0
  564. sage/modules/fp_graded/steenrod/profile.py +241 -0
  565. sage/modules/free_module.py +8447 -0
  566. sage/modules/free_module_element.cpython-314-aarch64-linux-gnu.so +0 -0
  567. sage/modules/free_module_element.pxd +22 -0
  568. sage/modules/free_module_element.pyx +5445 -0
  569. sage/modules/free_module_homspace.py +369 -0
  570. sage/modules/free_module_integer.py +896 -0
  571. sage/modules/free_module_morphism.py +823 -0
  572. sage/modules/free_module_pseudohomspace.py +352 -0
  573. sage/modules/free_module_pseudomorphism.py +578 -0
  574. sage/modules/free_quadratic_module.py +1706 -0
  575. sage/modules/free_quadratic_module_integer_symmetric.py +1790 -0
  576. sage/modules/matrix_morphism.py +1745 -0
  577. sage/modules/misc.py +103 -0
  578. sage/modules/module_functors.py +192 -0
  579. sage/modules/multi_filtered_vector_space.py +719 -0
  580. sage/modules/ore_module.py +2208 -0
  581. sage/modules/ore_module_element.py +178 -0
  582. sage/modules/ore_module_homspace.py +147 -0
  583. sage/modules/ore_module_morphism.py +968 -0
  584. sage/modules/quotient_module.py +699 -0
  585. sage/modules/real_double_vector.py +22 -0
  586. sage/modules/submodule.py +255 -0
  587. sage/modules/tensor_operations.py +567 -0
  588. sage/modules/torsion_quadratic_module.py +1352 -0
  589. sage/modules/tutorial_free_modules.py +248 -0
  590. sage/modules/vector_complex_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  591. sage/modules/vector_complex_double_dense.pxd +6 -0
  592. sage/modules/vector_complex_double_dense.pyx +117 -0
  593. sage/modules/vector_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  594. sage/modules/vector_double_dense.pxd +6 -0
  595. sage/modules/vector_double_dense.pyx +604 -0
  596. sage/modules/vector_integer_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  597. sage/modules/vector_integer_dense.pxd +15 -0
  598. sage/modules/vector_integer_dense.pyx +361 -0
  599. sage/modules/vector_integer_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  600. sage/modules/vector_integer_sparse.pxd +29 -0
  601. sage/modules/vector_integer_sparse.pyx +406 -0
  602. sage/modules/vector_modn_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  603. sage/modules/vector_modn_dense.pxd +12 -0
  604. sage/modules/vector_modn_dense.pyx +394 -0
  605. sage/modules/vector_modn_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  606. sage/modules/vector_modn_sparse.pxd +21 -0
  607. sage/modules/vector_modn_sparse.pyx +298 -0
  608. sage/modules/vector_numpy_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  609. sage/modules/vector_numpy_dense.pxd +15 -0
  610. sage/modules/vector_numpy_dense.pyx +304 -0
  611. sage/modules/vector_numpy_integer_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  612. sage/modules/vector_numpy_integer_dense.pxd +7 -0
  613. sage/modules/vector_numpy_integer_dense.pyx +54 -0
  614. sage/modules/vector_rational_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  615. sage/modules/vector_rational_dense.pxd +15 -0
  616. sage/modules/vector_rational_dense.pyx +387 -0
  617. sage/modules/vector_rational_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  618. sage/modules/vector_rational_sparse.pxd +30 -0
  619. sage/modules/vector_rational_sparse.pyx +413 -0
  620. sage/modules/vector_real_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  621. sage/modules/vector_real_double_dense.pxd +6 -0
  622. sage/modules/vector_real_double_dense.pyx +126 -0
  623. sage/modules/vector_space_homspace.py +430 -0
  624. sage/modules/vector_space_morphism.py +989 -0
  625. sage/modules/with_basis/all.py +15 -0
  626. sage/modules/with_basis/cell_module.py +494 -0
  627. sage/modules/with_basis/indexed_element.cpython-314-aarch64-linux-gnu.so +0 -0
  628. sage/modules/with_basis/indexed_element.pxd +13 -0
  629. sage/modules/with_basis/indexed_element.pyx +1058 -0
  630. sage/modules/with_basis/invariant.py +1075 -0
  631. sage/modules/with_basis/morphism.py +1636 -0
  632. sage/modules/with_basis/representation.py +2939 -0
  633. sage/modules/with_basis/subquotient.py +685 -0
  634. sage/numerical/all__sagemath_modules.py +6 -0
  635. sage/numerical/gauss_legendre.cpython-314-aarch64-linux-gnu.so +0 -0
  636. sage/numerical/gauss_legendre.pyx +381 -0
  637. sage/numerical/optimize.py +910 -0
  638. sage/probability/all.py +10 -0
  639. sage/probability/probability_distribution.cpython-314-aarch64-linux-gnu.so +0 -0
  640. sage/probability/probability_distribution.pyx +1242 -0
  641. sage/probability/random_variable.py +411 -0
  642. sage/quadratic_forms/all.py +4 -0
  643. sage/quadratic_forms/all__sagemath_modules.py +15 -0
  644. sage/quadratic_forms/binary_qf.py +2042 -0
  645. sage/quadratic_forms/bqf_class_group.py +748 -0
  646. sage/quadratic_forms/constructions.py +93 -0
  647. sage/quadratic_forms/count_local_2.cpython-314-aarch64-linux-gnu.so +0 -0
  648. sage/quadratic_forms/count_local_2.pyx +365 -0
  649. sage/quadratic_forms/extras.py +195 -0
  650. sage/quadratic_forms/quadratic_form.py +1753 -0
  651. sage/quadratic_forms/quadratic_form__count_local_2.py +221 -0
  652. sage/quadratic_forms/quadratic_form__equivalence_testing.py +708 -0
  653. sage/quadratic_forms/quadratic_form__evaluate.cpython-314-aarch64-linux-gnu.so +0 -0
  654. sage/quadratic_forms/quadratic_form__evaluate.pyx +139 -0
  655. sage/quadratic_forms/quadratic_form__local_density_congruence.py +977 -0
  656. sage/quadratic_forms/quadratic_form__local_field_invariants.py +1072 -0
  657. sage/quadratic_forms/quadratic_form__neighbors.py +424 -0
  658. sage/quadratic_forms/quadratic_form__reduction_theory.py +488 -0
  659. sage/quadratic_forms/quadratic_form__split_local_covering.py +416 -0
  660. sage/quadratic_forms/quadratic_form__ternary_Tornaria.py +657 -0
  661. sage/quadratic_forms/quadratic_form__theta.py +352 -0
  662. sage/quadratic_forms/quadratic_form__variable_substitutions.py +370 -0
  663. sage/quadratic_forms/random_quadraticform.py +209 -0
  664. sage/quadratic_forms/ternary.cpython-314-aarch64-linux-gnu.so +0 -0
  665. sage/quadratic_forms/ternary.pyx +1154 -0
  666. sage/quadratic_forms/ternary_qf.py +2027 -0
  667. sage/rings/all__sagemath_modules.py +28 -0
  668. sage/rings/asymptotic/all__sagemath_modules.py +1 -0
  669. sage/rings/asymptotic/misc.py +1252 -0
  670. sage/rings/cc.py +4 -0
  671. sage/rings/cfinite_sequence.py +1306 -0
  672. sage/rings/complex_conversion.cpython-314-aarch64-linux-gnu.so +0 -0
  673. sage/rings/complex_conversion.pxd +8 -0
  674. sage/rings/complex_conversion.pyx +23 -0
  675. sage/rings/complex_double.cpython-314-aarch64-linux-gnu.so +0 -0
  676. sage/rings/complex_double.pxd +21 -0
  677. sage/rings/complex_double.pyx +2654 -0
  678. sage/rings/complex_mpc.cpython-314-aarch64-linux-gnu.so +0 -0
  679. sage/rings/complex_mpc.pxd +21 -0
  680. sage/rings/complex_mpc.pyx +2576 -0
  681. sage/rings/complex_mpfr.cpython-314-aarch64-linux-gnu.so +0 -0
  682. sage/rings/complex_mpfr.pxd +18 -0
  683. sage/rings/complex_mpfr.pyx +3602 -0
  684. sage/rings/derivation.py +2334 -0
  685. sage/rings/finite_rings/all__sagemath_modules.py +1 -0
  686. sage/rings/finite_rings/maps_finite_field.py +191 -0
  687. sage/rings/function_field/all__sagemath_modules.py +8 -0
  688. sage/rings/function_field/derivations.py +102 -0
  689. sage/rings/function_field/derivations_rational.py +132 -0
  690. sage/rings/function_field/differential.py +853 -0
  691. sage/rings/function_field/divisor.py +1107 -0
  692. sage/rings/function_field/drinfeld_modules/action.py +199 -0
  693. sage/rings/function_field/drinfeld_modules/all.py +1 -0
  694. sage/rings/function_field/drinfeld_modules/charzero_drinfeld_module.py +673 -0
  695. sage/rings/function_field/drinfeld_modules/drinfeld_module.py +2087 -0
  696. sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py +1131 -0
  697. sage/rings/function_field/drinfeld_modules/homset.py +420 -0
  698. sage/rings/function_field/drinfeld_modules/morphism.py +820 -0
  699. sage/rings/function_field/hermite_form_polynomial.cpython-314-aarch64-linux-gnu.so +0 -0
  700. sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
  701. sage/rings/function_field/khuri_makdisi.cpython-314-aarch64-linux-gnu.so +0 -0
  702. sage/rings/function_field/khuri_makdisi.pyx +935 -0
  703. sage/rings/invariants/all.py +4 -0
  704. sage/rings/invariants/invariant_theory.py +4597 -0
  705. sage/rings/invariants/reconstruction.py +395 -0
  706. sage/rings/polynomial/all__sagemath_modules.py +17 -0
  707. sage/rings/polynomial/integer_valued_polynomials.py +1230 -0
  708. sage/rings/polynomial/laurent_polynomial_mpair.cpython-314-aarch64-linux-gnu.so +0 -0
  709. sage/rings/polynomial/laurent_polynomial_mpair.pxd +15 -0
  710. sage/rings/polynomial/laurent_polynomial_mpair.pyx +2023 -0
  711. sage/rings/polynomial/ore_function_element.py +952 -0
  712. sage/rings/polynomial/ore_function_field.py +1028 -0
  713. sage/rings/polynomial/ore_polynomial_element.cpython-314-aarch64-linux-gnu.so +0 -0
  714. sage/rings/polynomial/ore_polynomial_element.pxd +48 -0
  715. sage/rings/polynomial/ore_polynomial_element.pyx +3145 -0
  716. sage/rings/polynomial/ore_polynomial_ring.py +1334 -0
  717. sage/rings/polynomial/polynomial_real_mpfr_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  718. sage/rings/polynomial/polynomial_real_mpfr_dense.pyx +788 -0
  719. sage/rings/polynomial/q_integer_valued_polynomials.py +1264 -0
  720. sage/rings/polynomial/skew_polynomial_element.cpython-314-aarch64-linux-gnu.so +0 -0
  721. sage/rings/polynomial/skew_polynomial_element.pxd +9 -0
  722. sage/rings/polynomial/skew_polynomial_element.pyx +684 -0
  723. sage/rings/polynomial/skew_polynomial_finite_field.cpython-314-aarch64-linux-gnu.so +0 -0
  724. sage/rings/polynomial/skew_polynomial_finite_field.pxd +19 -0
  725. sage/rings/polynomial/skew_polynomial_finite_field.pyx +1093 -0
  726. sage/rings/polynomial/skew_polynomial_finite_order.cpython-314-aarch64-linux-gnu.so +0 -0
  727. sage/rings/polynomial/skew_polynomial_finite_order.pxd +10 -0
  728. sage/rings/polynomial/skew_polynomial_finite_order.pyx +567 -0
  729. sage/rings/polynomial/skew_polynomial_ring.py +908 -0
  730. sage/rings/real_double_element_gsl.cpython-314-aarch64-linux-gnu.so +0 -0
  731. sage/rings/real_double_element_gsl.pxd +8 -0
  732. sage/rings/real_double_element_gsl.pyx +794 -0
  733. sage/rings/real_field.py +58 -0
  734. sage/rings/real_mpfr.cpython-314-aarch64-linux-gnu.so +0 -0
  735. sage/rings/real_mpfr.pxd +29 -0
  736. sage/rings/real_mpfr.pyx +6122 -0
  737. sage/rings/ring_extension.cpython-314-aarch64-linux-gnu.so +0 -0
  738. sage/rings/ring_extension.pxd +42 -0
  739. sage/rings/ring_extension.pyx +2779 -0
  740. sage/rings/ring_extension_conversion.cpython-314-aarch64-linux-gnu.so +0 -0
  741. sage/rings/ring_extension_conversion.pxd +16 -0
  742. sage/rings/ring_extension_conversion.pyx +462 -0
  743. sage/rings/ring_extension_element.cpython-314-aarch64-linux-gnu.so +0 -0
  744. sage/rings/ring_extension_element.pxd +21 -0
  745. sage/rings/ring_extension_element.pyx +1635 -0
  746. sage/rings/ring_extension_homset.py +64 -0
  747. sage/rings/ring_extension_morphism.cpython-314-aarch64-linux-gnu.so +0 -0
  748. sage/rings/ring_extension_morphism.pxd +35 -0
  749. sage/rings/ring_extension_morphism.pyx +920 -0
  750. sage/schemes/all__sagemath_modules.py +1 -0
  751. sage/schemes/projective/all__sagemath_modules.py +1 -0
  752. sage/schemes/projective/coherent_sheaf.py +300 -0
  753. sage/schemes/projective/cohomology.py +510 -0
  754. sage/stats/all.py +15 -0
  755. sage/stats/basic_stats.py +489 -0
  756. sage/stats/distributions/all.py +7 -0
  757. sage/stats/distributions/catalog.py +34 -0
  758. sage/stats/distributions/dgs.h +50 -0
  759. sage/stats/distributions/dgs.pxd +111 -0
  760. sage/stats/distributions/dgs_bern.h +400 -0
  761. sage/stats/distributions/dgs_gauss.h +614 -0
  762. sage/stats/distributions/dgs_misc.h +104 -0
  763. sage/stats/distributions/discrete_gaussian_integer.cpython-314-aarch64-linux-gnu.so +0 -0
  764. sage/stats/distributions/discrete_gaussian_integer.pxd +14 -0
  765. sage/stats/distributions/discrete_gaussian_integer.pyx +498 -0
  766. sage/stats/distributions/discrete_gaussian_lattice.py +908 -0
  767. sage/stats/distributions/discrete_gaussian_polynomial.py +141 -0
  768. sage/stats/hmm/all.py +15 -0
  769. sage/stats/hmm/chmm.cpython-314-aarch64-linux-gnu.so +0 -0
  770. sage/stats/hmm/chmm.pyx +1595 -0
  771. sage/stats/hmm/distributions.cpython-314-aarch64-linux-gnu.so +0 -0
  772. sage/stats/hmm/distributions.pxd +29 -0
  773. sage/stats/hmm/distributions.pyx +531 -0
  774. sage/stats/hmm/hmm.cpython-314-aarch64-linux-gnu.so +0 -0
  775. sage/stats/hmm/hmm.pxd +17 -0
  776. sage/stats/hmm/hmm.pyx +1388 -0
  777. sage/stats/hmm/util.cpython-314-aarch64-linux-gnu.so +0 -0
  778. sage/stats/hmm/util.pxd +7 -0
  779. sage/stats/hmm/util.pyx +165 -0
  780. sage/stats/intlist.cpython-314-aarch64-linux-gnu.so +0 -0
  781. sage/stats/intlist.pxd +14 -0
  782. sage/stats/intlist.pyx +588 -0
  783. sage/stats/r.py +49 -0
  784. sage/stats/time_series.cpython-314-aarch64-linux-gnu.so +0 -0
  785. sage/stats/time_series.pxd +6 -0
  786. sage/stats/time_series.pyx +2546 -0
  787. sage/tensor/all.py +2 -0
  788. sage/tensor/modules/all.py +8 -0
  789. sage/tensor/modules/alternating_contr_tensor.py +761 -0
  790. sage/tensor/modules/comp.py +5598 -0
  791. sage/tensor/modules/ext_pow_free_module.py +824 -0
  792. sage/tensor/modules/finite_rank_free_module.py +3589 -0
  793. sage/tensor/modules/format_utilities.py +333 -0
  794. sage/tensor/modules/free_module_alt_form.py +858 -0
  795. sage/tensor/modules/free_module_automorphism.py +1207 -0
  796. sage/tensor/modules/free_module_basis.py +1074 -0
  797. sage/tensor/modules/free_module_element.py +284 -0
  798. sage/tensor/modules/free_module_homset.py +652 -0
  799. sage/tensor/modules/free_module_linear_group.py +564 -0
  800. sage/tensor/modules/free_module_morphism.py +1581 -0
  801. sage/tensor/modules/free_module_tensor.py +3289 -0
  802. sage/tensor/modules/reflexive_module.py +386 -0
  803. sage/tensor/modules/tensor_free_module.py +780 -0
  804. sage/tensor/modules/tensor_free_submodule.py +538 -0
  805. sage/tensor/modules/tensor_free_submodule_basis.py +140 -0
  806. sage/tensor/modules/tensor_with_indices.py +1043 -0
@@ -0,0 +1,800 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ """
3
+ Set systems
4
+
5
+ Many matroid methods return a collection of subsets. In this module a class
6
+ :class:`SetSystem <sage.matroids.set_system.SetSystem>` is defined to do
7
+ just this. The class is intended for internal use, so all you can do as a user
8
+ is iterate over its members.
9
+
10
+ The class is equipped with partition refinement methods to help with matroid
11
+ isomorphism testing.
12
+
13
+ AUTHORS:
14
+
15
+ - Rudi Pendavingh, Stefan van Zwam (2013-04-01): initial version
16
+ """
17
+
18
+ # ****************************************************************************
19
+ # Copyright (C) 2013 Rudi Pendavingh <rudi.pendavingh@gmail.com>
20
+ # Copyright (C) 2013 Stefan van Zwam <stefanvanzwam@gmail.com>
21
+ #
22
+ # Distributed under the terms of the GNU General Public License (GPL)
23
+ # as published by the Free Software Foundation; either version 2 of
24
+ # the License, or (at your option) any later version.
25
+ # https://www.gnu.org/licenses/
26
+ # ****************************************************************************
27
+
28
+ from cysignals.memory cimport check_allocarray, check_reallocarray, sig_free
29
+ from sage.data_structures.bitset_base cimport *
30
+
31
+ # SetSystem
32
+
33
+ cdef class SetSystem:
34
+ """
35
+ A ``SetSystem`` is an enumerator of a collection of subsets of a given
36
+ fixed and finite groundset. It offers the possibility to enumerate its
37
+ contents. One is most likely to encounter these as output from some
38
+ Matroid methods::
39
+
40
+ sage: M = matroids.catalog.Fano()
41
+ sage: M.circuits()
42
+ SetSystem of 14 sets over 7 elements
43
+
44
+ To access the sets in this structure, simply iterate over them. The
45
+ simplest way must be::
46
+
47
+ sage: from sage.matroids.set_system import SetSystem
48
+ sage: S = SetSystem([1, 2, 3, 4], [[1, 2], [3, 4], [1, 2, 4]])
49
+ sage: T = list(S)
50
+
51
+ Or immediately use it to iterate::
52
+
53
+ sage: from sage.matroids.set_system import SetSystem
54
+ sage: S = SetSystem([1, 2, 3, 4], [[1, 2], [3, 4], [1, 2, 4]])
55
+ sage: [min(X) for X in S]
56
+ [1, 3, 1]
57
+
58
+ Note that this class is intended for runtime, so no loads/dumps mechanism
59
+ was implemented.
60
+
61
+ .. WARNING::
62
+
63
+ The only guaranteed behavior of this class is that it is iterable. It
64
+ is expected that M.circuits(), M.bases(), and so on will in the near
65
+ future return actual iterators. All other methods (which are already
66
+ hidden by default) are only for internal use by the Sage matroid code.
67
+ """
68
+ def __cinit__(self, groundset, subsets=None, capacity=1):
69
+ """
70
+ Init internal data structures.
71
+
72
+ EXAMPLES::
73
+
74
+ sage: from sage.matroids.set_system import SetSystem
75
+ sage: S = SetSystem([1, 2, 3, 4], [[1, 2], [3, 4], [1, 2, 4]])
76
+ sage: S
77
+ SetSystem of 3 sets over 4 elements
78
+ """
79
+ cdef long i
80
+ if not isinstance(groundset, tuple):
81
+ self._groundset = tuple(groundset)
82
+ else:
83
+ self._groundset = groundset
84
+ self._idx = {}
85
+ for i in range(len(self._groundset)):
86
+ self._idx[self._groundset[i]] = i
87
+
88
+ self._groundset_size = len(groundset)
89
+ self._bitset_size = max(self._groundset_size, 1)
90
+ self._capacity = capacity
91
+ self._subsets = <bitset_t*>check_allocarray(self._capacity, sizeof(bitset_t))
92
+ bitset_init(self._temp, self._bitset_size)
93
+ self._len = 0
94
+
95
+ def __init__(self, groundset, subsets=None, capacity=1):
96
+ """
97
+ Create a SetSystem.
98
+
99
+ INPUT:
100
+
101
+ - ``groundset`` -- list or tuple of finitely many elements
102
+ - ``subsets`` -- (default: ``None``) enumerator for a set of subsets of
103
+ ``groundset``
104
+ - ``capacity`` -- (default: ``1``) initial maximal capacity of the set
105
+ system
106
+
107
+ EXAMPLES::
108
+
109
+ sage: from sage.matroids.set_system import SetSystem
110
+ sage: S = SetSystem([1, 2, 3, 4], [[1, 2], [3, 4], [1, 2, 4]])
111
+ sage: S
112
+ SetSystem of 3 sets over 4 elements
113
+ sage: sorted(S[1])
114
+ [3, 4]
115
+ sage: for s in S: print(sorted(s))
116
+ [1, 2]
117
+ [3, 4]
118
+ [1, 2, 4]
119
+ """
120
+ if subsets is not None:
121
+ for e in subsets:
122
+ self.append(e)
123
+
124
+ def __dealloc__(self):
125
+ cdef long i
126
+ for i in range(self._len):
127
+ bitset_free(self._subsets[i])
128
+ sig_free(self._subsets)
129
+ bitset_free(self._temp)
130
+
131
+ def __len__(self):
132
+ """
133
+ Return the number of subsets in this SetSystem.
134
+
135
+ EXAMPLES::
136
+
137
+ sage: from sage.matroids.set_system import SetSystem
138
+ sage: S = SetSystem([1, 2, 3, 4], [[1, 2], [3, 4], [1, 2, 4]])
139
+ sage: S
140
+ SetSystem of 3 sets over 4 elements
141
+ sage: len(S)
142
+ 3
143
+ """
144
+ return self._len
145
+
146
+ def __iter__(self):
147
+ """
148
+ Return an iterator for the subsets in this SetSystem.
149
+
150
+ EXAMPLES::
151
+
152
+ sage: from sage.matroids.set_system import SetSystem
153
+ sage: S = SetSystem([1, 2, 3, 4], [[1, 2], [3, 4], [1, 2, 4]])
154
+ sage: for s in S: print(sorted(s))
155
+ [1, 2]
156
+ [3, 4]
157
+ [1, 2, 4]
158
+ """
159
+ return SetSystemIterator(self)
160
+
161
+ def __getitem__(self, k):
162
+ """
163
+ Return the `k`-th subset in this SetSystem.
164
+
165
+ INPUT:
166
+
167
+ - ``k`` -- integer; the index of the subset in the system
168
+
169
+ OUTPUT: the subset at index `k`
170
+
171
+ EXAMPLES::
172
+
173
+ sage: from sage.matroids.set_system import SetSystem
174
+ sage: S = SetSystem([1, 2, 3, 4], [[1, 2], [3, 4], [1, 2, 4]])
175
+ sage: sorted(S[0])
176
+ [1, 2]
177
+ sage: sorted(S[1])
178
+ [3, 4]
179
+ sage: sorted(S[2])
180
+ [1, 2, 4]
181
+ """
182
+ if k < len(self):
183
+ return self.subset(k)
184
+ else:
185
+ raise ValueError("out of range")
186
+
187
+ def __repr__(self):
188
+ """
189
+ Return a string representation of ``self``.
190
+
191
+ EXAMPLES::
192
+
193
+ sage: from sage.matroids.set_system import SetSystem
194
+ sage: S = SetSystem([1, 2, 3, 4], [[1, 2], [3, 4], [1, 2, 4]])
195
+ sage: repr(S) # indirect doctest
196
+ 'SetSystem of 3 sets over 4 elements'
197
+ """
198
+ return f'SetSystem of {self._len} sets over {self._groundset_size} elements'
199
+
200
+ cdef copy(self):
201
+ cdef SetSystem S
202
+ S = SetSystem(self._groundset, capacity=len(self))
203
+ for i in range(len(self)):
204
+ S._append(self._subsets[i])
205
+ return S
206
+
207
+ cdef _relabel(self, mapping):
208
+ """
209
+ Relabel each element `e` of the ground set as ``mapping[e]``, where
210
+ ``mapping`` is a given injective map.
211
+
212
+ INPUT:
213
+
214
+ - ``mapping`` -- a Python object such that ``mapping[e]`` is the new
215
+ label of `e`
216
+
217
+ OUTPUT: none
218
+ """
219
+ cdef long i
220
+ E = []
221
+ for i in range(self._groundset_size):
222
+ if self._groundset[i] in mapping:
223
+ E.append(mapping[self._E[i]])
224
+ else:
225
+ E.append(self._E[i])
226
+ self._groundset = E
227
+ self._idx = {}
228
+ for i in range(self._groundset_size):
229
+ self._idx[self._groundset[i]] = i
230
+
231
+ cpdef _complements(self):
232
+ """
233
+ Return a SetSystem containing the complements of each element in the
234
+ groundset.
235
+
236
+ EXAMPLES::
237
+
238
+ sage: from sage.matroids.set_system import SetSystem
239
+ sage: S = SetSystem([1, 2, 3, 4], [[1, 2], [3, 4], [1, 2, 4]])
240
+ sage: T = S._complements()
241
+ sage: for t in T: print(sorted(t))
242
+ [3, 4]
243
+ [1, 2]
244
+ [3]
245
+ """
246
+ cdef SetSystem S
247
+ if self._groundset_size == 0:
248
+ return self
249
+ S = SetSystem(self._groundset, capacity=len(self))
250
+ for i in range(len(self)):
251
+ bitset_complement(self._temp, self._subsets[i])
252
+ S._append(self._temp)
253
+ return S
254
+
255
+ cdef inline resize(self, k=None):
256
+ """
257
+ Change the capacity of the SetSystem.
258
+ """
259
+ if k is None:
260
+ k = self._len
261
+ for i in range(k, self._len):
262
+ bitset_free(self._subsets[i])
263
+ self._len = min(self._len, k)
264
+ k2 = max(k, 1)
265
+ self._subsets = <bitset_t*>check_reallocarray(self._subsets, k2, sizeof(bitset_t))
266
+ self._capacity = k2
267
+
268
+ cdef inline _append(self, bitset_t X):
269
+ """
270
+ Append subset in internal, bitset format.
271
+ """
272
+ if self._capacity == self._len:
273
+ self.resize(self._capacity * 2)
274
+ bitset_init(self._subsets[self._len], self._bitset_size)
275
+ bitset_copy(self._subsets[self._len], X)
276
+ self._len += 1
277
+
278
+ cdef inline append(self, X):
279
+ """
280
+ Append subset.
281
+ """
282
+ if self._capacity == self._len:
283
+ self.resize(self._capacity * 2)
284
+ bitset_init(self._subsets[self._len], self._bitset_size)
285
+ bitset_clear(self._subsets[self._len])
286
+ for x in X:
287
+ bitset_add(self._subsets[self._len], <mp_bitcnt_t> self._idx[x])
288
+ self._len += 1
289
+
290
+ cdef inline _subset(self, long k):
291
+ """
292
+ Return the `k`-th subset, in index format.
293
+ """
294
+ return bitset_list(self._subsets[k])
295
+
296
+ cdef subset(self, k):
297
+ """
298
+ Return the `k`-th subset.
299
+ """
300
+ cdef long i
301
+ F = set()
302
+ i = bitset_first(self._subsets[k])
303
+ while i >= 0:
304
+ F.add(self._groundset[i])
305
+ i = bitset_next(self._subsets[k], i + 1)
306
+ return frozenset(F)
307
+
308
+ cpdef _get_groundset(self):
309
+ """
310
+ Return the groundset of this SetSystem.
311
+
312
+ EXAMPLES::
313
+
314
+ sage: from sage.matroids.set_system import SetSystem
315
+ sage: S = SetSystem([1, 2, 3, 4], [[1, 2], [3, 4], [1, 2, 4]])
316
+ sage: sorted(S._get_groundset())
317
+ [1, 2, 3, 4]
318
+ """
319
+ return frozenset(self._groundset)
320
+
321
+ cpdef is_connected(self):
322
+ """
323
+ Test if the :class:`SetSystem` is connected.
324
+
325
+ A :class:`SetSystem` is connected if there is no nonempty proper subset
326
+ ``X`` of the groundset so the each subset is either contained in ``X``
327
+ or disjoint from ``X``.
328
+
329
+ EXAMPLES::
330
+
331
+ sage: from sage.matroids.set_system import SetSystem
332
+ sage: S = SetSystem([1, 2, 3, 4], [[1, 2], [3, 4], [1, 2, 4]])
333
+ sage: S.is_connected()
334
+ True
335
+ sage: S = SetSystem([1, 2, 3, 4], [[1, 2], [3, 4]])
336
+ sage: S.is_connected()
337
+ False
338
+ sage: S = SetSystem([1], [])
339
+ sage: S.is_connected()
340
+ True
341
+ """
342
+ if self._groundset_size <= 1:
343
+ return True
344
+ cdef long i
345
+ bitset_clear(self._temp)
346
+ cdef bitset_t active
347
+ bitset_init(active, self._len)
348
+ bitset_complement(active, active)
349
+
350
+ # We compute the union of all sets containing 0, and deactivate them.
351
+ for i in range(self._len):
352
+ if bitset_in(self._subsets[i], 0):
353
+ bitset_union(self._temp, self._subsets[i], self._temp)
354
+ bitset_discard(active, i)
355
+
356
+ cdef bint closed = False
357
+ while not closed:
358
+ closed = True
359
+
360
+ # We update _temp with all active sets that intersects it. If there
361
+ # is no such set, then _temp is closed (i.e. a connected component).
362
+ i = bitset_first(active)
363
+ while i>=0:
364
+ if not bitset_are_disjoint(self._temp, self._subsets[i]):
365
+ bitset_union(self._temp, self._subsets[i], self._temp)
366
+ bitset_discard(active, i)
367
+ closed = False
368
+ i = bitset_next(active, i+1)
369
+ bitset_free(active)
370
+ bitset_complement(self._temp, self._temp)
371
+ return bitset_isempty(self._temp)
372
+
373
+ # isomorphism
374
+
375
+ cdef list _incidence_count(self, E):
376
+ """
377
+ For the sub-collection indexed by ``E``, count how often each element
378
+ occurs.
379
+ """
380
+ cdef long i, e
381
+ cdef list cnt
382
+ cnt = [0 for v in range(self._groundset_size)]
383
+ for e in E:
384
+ i = bitset_first(self._subsets[e])
385
+ while i >= 0:
386
+ cnt[i] += 1
387
+ i = bitset_next(self._subsets[e], i + 1)
388
+ return cnt
389
+
390
+ cdef SetSystem _groundset_partition(self, SetSystem P, list cnt):
391
+ """
392
+ Helper method for partition methods below.
393
+ """
394
+ cdef dict C
395
+ cdef long i, v, t0, t
396
+ cdef bint split
397
+
398
+ C = {}
399
+ for i in range(len(P)):
400
+ v = bitset_first(P._subsets[i])
401
+ if v < 0:
402
+ continue
403
+ t0 = cnt[v]
404
+ v = bitset_next(P._subsets[i], v + 1)
405
+ split = False
406
+ while v >= 0:
407
+ t = cnt[v]
408
+ if t != t0:
409
+ split = True
410
+ if t < t0:
411
+ t0 = t
412
+ v = bitset_next(P._subsets[i], v + 1)
413
+ if split:
414
+ C.clear()
415
+ v = bitset_first(P._subsets[i])
416
+ while v >= 0:
417
+ t = cnt[v]
418
+ if t != t0:
419
+ if t in C:
420
+ C[t].add(v)
421
+ else:
422
+ C[t] = set([v])
423
+ v = bitset_next(P._subsets[i], v + 1)
424
+ for t in sorted(C):
425
+ bitset_clear(self._temp)
426
+ for v in C[t]:
427
+ bitset_add(self._temp, v)
428
+ bitset_discard(P._subsets[i], v)
429
+ P._append(self._temp)
430
+
431
+ cdef long subset_characteristic(self, SetSystem P, long e) noexcept:
432
+ """
433
+ Helper method for partition methods below.
434
+ """
435
+ cdef long c
436
+ c = 0
437
+ for p in range(len(P)):
438
+ c <<= bitset_len(P._subsets[p])
439
+ bitset_intersection(self._temp, P._subsets[p], self._subsets[e])
440
+ c += bitset_len(self._temp)
441
+ return c
442
+
443
+ cdef subsets_partition(self, SetSystem P=None, E=None):
444
+ """
445
+ Helper method for partition methods below.
446
+ """
447
+ if P is None:
448
+ P = self.groundset_partition()
449
+ if E is None:
450
+ E = range(self._len)
451
+ if len(E) == 0:
452
+ return [E]
453
+
454
+ ED = [(self.subset_characteristic(P, e), e) for e in E]
455
+ ED.sort()
456
+
457
+ EP = []
458
+ ep = []
459
+ d = ED[0][0]
460
+ eh = [d]
461
+ for ed in ED:
462
+ if ed[0] != d:
463
+ EP.append(ep)
464
+ ep = [ed[1]]
465
+ d = ed[0]
466
+ else:
467
+ ep.append(ed[1])
468
+ eh.append(ed[0])
469
+ EP.append(ep)
470
+ return EP, hash(tuple(eh))
471
+
472
+ cdef _distinguish(self, Py_ssize_t v):
473
+ """
474
+ Helper method for partition methods below.
475
+ """
476
+ cdef SetSystem S
477
+ S = SetSystem(self._groundset, capacity=len(self) + 1)
478
+ bitset_clear(self._temp)
479
+ bitset_add(self._temp, v)
480
+ for i in range(len(self)):
481
+ bitset_difference(S._temp, self._subsets[i], self._temp)
482
+ S._append(S._temp)
483
+ S._append(self._temp)
484
+ return S
485
+
486
+ # partition functions
487
+ cdef initial_partition(self, SetSystem P=None, E=None):
488
+ """
489
+ Helper method for partition methods below.
490
+ """
491
+ if E is None:
492
+ E = range(self._len)
493
+ if P is None:
494
+ if self._groundset:
495
+ P = SetSystem(self._groundset, [self._groundset], capacity=self._groundset_size)
496
+ else:
497
+ P = SetSystem([], [])
498
+ cnt = self._incidence_count(E)
499
+ self._groundset_partition(P, cnt)
500
+ return P
501
+
502
+ cpdef _equitable_partition(self, SetSystem P=None, EP=None):
503
+ r"""
504
+ Return an equitable ordered partition of the groundset of the
505
+ hypergraph whose edges are the subsets in this SetSystem.
506
+
507
+ Given any ordered partition `P = (p_1, ..., p_k)` of the groundset of
508
+ a hypergraph, any edge `e` of the hypergraph has a characteristic
509
+ intersection number sequence `i(e)=(|p_1\cap e|, ... , |p_k\cap e|))`.
510
+ There is an ordered partition `EP` of the edges that groups the edges
511
+ according to this intersection number sequence. Given this an ordered
512
+ partition of the edges, we may similarly refine `P` to a new ordered
513
+ partition `P'`, by considering the incidence numbers of groundset
514
+ elements with each partition element of `EP`.
515
+
516
+ The ordered partition `P` is equitable when `P' = P`.
517
+
518
+ INPUT:
519
+
520
+ - ``P`` -- an equitable ordered partition of the groundset, stored as
521
+ a SetSystem
522
+ - ``EP`` -- the corresponding equitable partition of the edges, stored
523
+ as a list of lists of indices of subsets of this SetSystem
524
+
525
+ OUTPUT:
526
+
527
+ - ``P`` -- an equitable ordered partition of the groundset, stored as a
528
+ SetSystem
529
+ - ``EP`` -- the corresponding equitable partition of the edges, stored
530
+ as a list of lists of indices of subsets of this SetSystem
531
+ - ``h`` -- integer invariant of the SetSystem
532
+
533
+ EXAMPLES::
534
+
535
+ sage: from sage.matroids.set_system import SetSystem
536
+ sage: S = SetSystem([1, 2, 3, 4], [[1, 2], [3, 4], [1, 2, 4]])
537
+ sage: for p in S._equitable_partition()[0]: print(sorted(p))
538
+ [3]
539
+ [4]
540
+ [1, 2]
541
+ sage: T = SetSystem([1, 2, 3, 4], [[1, 2], [3, 4], [1, 3, 4]])
542
+ sage: for p in T._equitable_partition()[0]: print(sorted(p))
543
+ [2]
544
+ [1]
545
+ [3, 4]
546
+
547
+ .. NOTE::
548
+
549
+ We do not maintain any well-defined order when refining a
550
+ partition. We do maintain that the resulting order of the
551
+ partition elements is an invariant of the isomorphism class of the
552
+ hypergraph.
553
+ """
554
+ cdef long h
555
+ cdef list EP2, H
556
+
557
+ if P is None:
558
+ P = self.initial_partition()
559
+ else:
560
+ P = P.copy()
561
+ if EP is None:
562
+ EP = self.subsets_partition(P)[0]
563
+
564
+ h = len(EP)
565
+ pl = 0
566
+ while len(P) > pl:
567
+ H = [h]
568
+ pl = len(P)
569
+ EP2 = []
570
+ for ep in EP:
571
+ SP, h = self.subsets_partition(P, ep)
572
+ H.append(h)
573
+ for p in SP:
574
+ cnt = self._incidence_count(p)
575
+ self._groundset_partition(P, cnt)
576
+ if len(p) > 1:
577
+ EP2.append(p)
578
+ EP = EP2
579
+ h = hash(tuple(H))
580
+
581
+ return P, EP, h
582
+
583
+ cpdef _heuristic_partition(self, SetSystem P=None, EP=None):
584
+ """
585
+ Return a heuristic ordered partition into singletons of the ground
586
+ set of the hypergraph whose edges are the subsets in this SetSystem.
587
+
588
+ This partition obtained as follows: make an equitable
589
+ partition ``P``, and while ``P`` has a partition element ``p`` with
590
+ more than one element, select an arbitrary ``e`` from the first such
591
+ ``p`` and split ``p`` into ``p-e``. Then replace ``P`` with
592
+ the equitable refinement of this partition.
593
+
594
+ INPUT:
595
+
596
+ - ``P`` -- (default: ``None``) an ordered partition of the groundset
597
+ - ``EP`` -- (default: ``None``) the corresponding partition of the
598
+ edges, stored as a list of lists of indices of subsets of this
599
+ SetSystem
600
+
601
+ OUTPUT:
602
+
603
+ - ``P`` -- an ordered partition of the groundset into singletons,
604
+ stored as a SetSystem
605
+ - ``EP`` -- the corresponding partition of the edges, stored as a list
606
+ of lists of indices of subsets of this SetSystem
607
+ - ``h`` -- integer invariant of the SetSystem
608
+
609
+ EXAMPLES::
610
+
611
+ sage: from sage.matroids.set_system import SetSystem
612
+ sage: S = SetSystem([1, 2, 3, 4], [[1, 2], [3, 4], [1, 2, 4]])
613
+ sage: for p in S._heuristic_partition()[0]: print(sorted(p))
614
+ [3]
615
+ [4]
616
+ [2]
617
+ [1]
618
+ sage: T = SetSystem([1, 2, 3, 4], [[1, 2], [3, 4], [1, 3, 4]])
619
+ sage: for p in T._heuristic_partition()[0]: print(sorted(p))
620
+ [2]
621
+ [1]
622
+ [4]
623
+ [3]
624
+ """
625
+ P, EP, h = self._equitable_partition(P, EP)
626
+ for i in range(len(P)):
627
+ if bitset_len(P._subsets[i]) > 1:
628
+ return self._heuristic_partition(P._distinguish(bitset_first(P._subsets[i])), EP)
629
+ return P, EP, h
630
+
631
+ cpdef _isomorphism(self, SetSystem other, SetSystem SP=None, SetSystem OP=None):
632
+ """
633
+ Return a groundset isomorphism between this SetSystem and an other.
634
+
635
+ INPUT:
636
+
637
+ - ``other`` -- SetSystem
638
+ - ``SP`` -- (optional) SetSystem storing an ordered partition of the
639
+ groundset of ``self``
640
+ - ``OP`` -- (optional) SetSystem storing an ordered partition of the
641
+ groundset of ``other``
642
+
643
+ OUTPUT:
644
+
645
+ ``morphism`` -- dictionary containing an isomorphism respecting the
646
+ given ordered partitions, or ``None`` if no such isomorphism exists.
647
+
648
+ EXAMPLES::
649
+
650
+ sage: from sage.matroids.set_system import SetSystem
651
+ sage: S = SetSystem([1, 2, 3, 4], [[1, 2], [3, 4], [1, 2, 4]])
652
+ sage: T = SetSystem(['a', 'b', 'c', 'd'], [['a', 'b'], ['c', 'd'],
653
+ ....: ['a', 'c', 'd']])
654
+ sage: S._isomorphism(T)
655
+ {1: 'c', 2: 'd', 3: 'b', 4: 'a'}
656
+ sage: S = SetSystem([], [])
657
+ sage: S._isomorphism(S)
658
+ {}
659
+ """
660
+ cdef long l, p, v
661
+ if SP is None or OP is None:
662
+ SP, SEP, sh = self._equitable_partition()
663
+ OP, OEP, oh = other._equitable_partition()
664
+ if sh != oh:
665
+ return None
666
+ if len(SP) != len(OP):
667
+ return None
668
+ p = SP._groundset_size + 1
669
+ for i in range(len(SP)):
670
+ l = bitset_len(SP._subsets[i])
671
+ if l != bitset_len(OP._subsets[i]):
672
+ return None
673
+ if l != 1 and l < p:
674
+ p = l
675
+ for i in range(len(SP)):
676
+ if bitset_len(SP._subsets[i]) == p:
677
+ SP2, SEP, sh = self._equitable_partition(SP._distinguish(bitset_first(SP._subsets[i])))
678
+ v = bitset_first(OP._subsets[i])
679
+ while v >= 0:
680
+ OP2, OEP, oh = other._equitable_partition(OP._distinguish(v))
681
+ if sh == oh:
682
+ m = self._isomorphism(other, SP2, OP2)
683
+ if m is not None:
684
+ return m
685
+ v = bitset_next(OP._subsets[i], v + 1)
686
+ return None
687
+ if sorted([self.subset_characteristic(SP, i) for i in range(len(self))]) != sorted([other.subset_characteristic(OP, i) for i in range(len(other))]):
688
+ return None
689
+ return dict([(self._groundset[bitset_first(SP._subsets[i])], other._groundset[bitset_first(OP._subsets[i])]) for i in range(len(SP))])
690
+
691
+ cpdef _equivalence(self, is_equiv, SetSystem other, SetSystem SP=None, SetSystem OP=None):
692
+ """
693
+ Return a groundset isomorphism that is an equivalence between this
694
+ SetSystem and an other.
695
+
696
+ INPUT:
697
+
698
+ - ``is_equiv`` -- a function that determines if a given groundset
699
+ isomorphism is a valid equivalence
700
+ - ``other`` -- SetSystem
701
+ - ``SP`` -- (optional) SetSystem storing an ordered partition of the
702
+ groundset of ``self``
703
+ - ``OP`` -- (optional) SetSystem storing an ordered partition of the
704
+ groundset of ``other``
705
+
706
+ OUTPUT:
707
+
708
+ ``morphism``, a dictionary containing an isomorphism respecting the
709
+ given ordered partitions, so that ``is_equiv(self, other, morphism)``
710
+ is ``True``; or ``None`` if no such equivalence exists.
711
+
712
+ EXAMPLES::
713
+
714
+ sage: from sage.matroids.set_system import SetSystem
715
+ sage: S = SetSystem([1, 2, 3, 4], [[1, 2], [3, 4], [1, 2, 4]])
716
+ sage: T = SetSystem(['a', 'b', 'c', 'd'], [['a', 'b'], ['c', 'd'],
717
+ ....: ['a', 'c', 'd']])
718
+ sage: S._equivalence(lambda self, other, morph:True, T)
719
+ {1: 'c', 2: 'd', 3: 'b', 4: 'a'}
720
+
721
+ Check that :issue:`15189` is fixed::
722
+
723
+ sage: M = Matroid(ring=GF(5), reduced_matrix=[[1,0,3],[0,1,1],[1,1,0]])
724
+ sage: N = Matroid(ring=GF(5), reduced_matrix=[[1,0,1],[0,1,1],[1,1,0]])
725
+ sage: M.is_field_isomorphic(N)
726
+ False
727
+ sage: any(M.is_field_isomorphism(N, p) for p in Permutations(range(6))) # needs sage.combinat
728
+ False
729
+ """
730
+ cdef long v
731
+ if SP is None or OP is None:
732
+ SP, SEP, sh = self._equitable_partition()
733
+ OP, OEP, oh = other._equitable_partition()
734
+ if sh != oh:
735
+ return None
736
+ if len(SP) != len(OP):
737
+ return None
738
+ for i in range(len(SP)):
739
+ if bitset_len(SP._subsets[i]) != bitset_len(OP._subsets[i]):
740
+ return None
741
+ for i in range(len(SP)):
742
+ if bitset_len(SP._subsets[i]) > 1:
743
+ SP2, SEP, sh = self._equitable_partition(SP._distinguish(bitset_first(SP._subsets[i])))
744
+ v = bitset_first(OP._subsets[i])
745
+ while v >= 0:
746
+ OP2, OEP, oh = other._equitable_partition(OP._distinguish(v))
747
+ if sh == oh:
748
+ m = self._equivalence(is_equiv, other, SP2, OP2)
749
+ if m is not None:
750
+ return m
751
+ v = bitset_next(OP._subsets[i], v + 1)
752
+ return None
753
+ morph = dict([(self._groundset[bitset_first(SP._subsets[i])], other._groundset[bitset_first(OP._subsets[i])]) for i in range(len(SP))])
754
+ if is_equiv(self, other, morph):
755
+ return morph
756
+
757
+
758
+ cdef class SetSystemIterator:
759
+ def __init__(self, H):
760
+ """
761
+ Create an iterator for a SetSystem.
762
+
763
+ Called internally when iterating over the contents of a SetSystem.
764
+
765
+ EXAMPLES::
766
+
767
+ sage: from sage.matroids.set_system import SetSystem
768
+ sage: S = SetSystem([1, 2, 3, 4], [[1, 2], [3, 4], [1, 2, 4]])
769
+ sage: type(S.__iter__())
770
+ <... 'sage.matroids.set_system.SetSystemIterator'>
771
+ """
772
+ self._H = H
773
+ self._pointer = -1
774
+ self._len = len(H)
775
+
776
+ def __iter__(self):
777
+ return self
778
+
779
+ def __next__(self):
780
+ """
781
+ Return the next subset of a SetSystem.
782
+
783
+ EXAMPLES::
784
+
785
+ sage: from sage.matroids.set_system import SetSystem
786
+ sage: S = SetSystem([1, 2, 3, 4], [[1, 2], [3, 4], [1, 2, 4]])
787
+ sage: I = S.__iter__()
788
+ sage: sorted(I.__next__())
789
+ [1, 2]
790
+ sage: sorted(I.__next__())
791
+ [3, 4]
792
+ sage: sorted(I.__next__())
793
+ [1, 2, 4]
794
+ """
795
+ self._pointer += 1
796
+ if self._pointer == self._len:
797
+ self._pointer = -1
798
+ raise StopIteration
799
+ else:
800
+ return self._H.subset(self._pointer)