passagemath-modules 10.6.31rc3__cp314-cp314-musllinux_1_2_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of passagemath-modules might be problematic. Click here for more details.

Files changed (808) hide show
  1. passagemath_modules-10.6.31rc3.dist-info/METADATA +281 -0
  2. passagemath_modules-10.6.31rc3.dist-info/RECORD +808 -0
  3. passagemath_modules-10.6.31rc3.dist-info/WHEEL +5 -0
  4. passagemath_modules-10.6.31rc3.dist-info/top_level.txt +2 -0
  5. passagemath_modules.libs/libgcc_s-0cd532bd.so.1 +0 -0
  6. passagemath_modules.libs/libgfortran-2c33b284.so.5.0.0 +0 -0
  7. passagemath_modules.libs/libgmp-0e7fc84e.so.10.5.0 +0 -0
  8. passagemath_modules.libs/libgsl-42cda06f.so.28.0.0 +0 -0
  9. passagemath_modules.libs/libmpc-d8ebe4b5.so.3.3.1 +0 -0
  10. passagemath_modules.libs/libmpfr-aaecbfc0.so.6.2.1 +0 -0
  11. passagemath_modules.libs/libopenblasp-r0-905cb27d.3.29.so +0 -0
  12. passagemath_modules.libs/libquadmath-bb76a5fc.so.0.0.0 +0 -0
  13. sage/algebras/all__sagemath_modules.py +20 -0
  14. sage/algebras/catalog.py +148 -0
  15. sage/algebras/clifford_algebra.py +3107 -0
  16. sage/algebras/clifford_algebra_element.cpython-314-x86_64-linux-musl.so +0 -0
  17. sage/algebras/clifford_algebra_element.pxd +16 -0
  18. sage/algebras/clifford_algebra_element.pyx +997 -0
  19. sage/algebras/commutative_dga.py +4252 -0
  20. sage/algebras/exterior_algebra_groebner.cpython-314-x86_64-linux-musl.so +0 -0
  21. sage/algebras/exterior_algebra_groebner.pxd +55 -0
  22. sage/algebras/exterior_algebra_groebner.pyx +727 -0
  23. sage/algebras/finite_dimensional_algebras/all.py +2 -0
  24. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra.py +1029 -0
  25. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.cpython-314-x86_64-linux-musl.so +0 -0
  26. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pxd +12 -0
  27. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pyx +706 -0
  28. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_ideal.py +196 -0
  29. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_morphism.py +255 -0
  30. sage/algebras/finite_gca.py +528 -0
  31. sage/algebras/group_algebra.py +232 -0
  32. sage/algebras/lie_algebras/abelian.py +197 -0
  33. sage/algebras/lie_algebras/affine_lie_algebra.py +1213 -0
  34. sage/algebras/lie_algebras/all.py +25 -0
  35. sage/algebras/lie_algebras/all__sagemath_modules.py +1 -0
  36. sage/algebras/lie_algebras/bch.py +177 -0
  37. sage/algebras/lie_algebras/bgg_dual_module.py +1184 -0
  38. sage/algebras/lie_algebras/bgg_resolution.py +232 -0
  39. sage/algebras/lie_algebras/center_uea.py +767 -0
  40. sage/algebras/lie_algebras/classical_lie_algebra.py +2516 -0
  41. sage/algebras/lie_algebras/examples.py +683 -0
  42. sage/algebras/lie_algebras/free_lie_algebra.py +973 -0
  43. sage/algebras/lie_algebras/heisenberg.py +820 -0
  44. sage/algebras/lie_algebras/lie_algebra.py +1562 -0
  45. sage/algebras/lie_algebras/lie_algebra_element.cpython-314-x86_64-linux-musl.so +0 -0
  46. sage/algebras/lie_algebras/lie_algebra_element.pxd +68 -0
  47. sage/algebras/lie_algebras/lie_algebra_element.pyx +2122 -0
  48. sage/algebras/lie_algebras/morphism.py +661 -0
  49. sage/algebras/lie_algebras/nilpotent_lie_algebra.py +457 -0
  50. sage/algebras/lie_algebras/onsager.py +1324 -0
  51. sage/algebras/lie_algebras/poincare_birkhoff_witt.py +816 -0
  52. sage/algebras/lie_algebras/quotient.py +462 -0
  53. sage/algebras/lie_algebras/rank_two_heisenberg_virasoro.py +355 -0
  54. sage/algebras/lie_algebras/representation.py +1040 -0
  55. sage/algebras/lie_algebras/structure_coefficients.py +459 -0
  56. sage/algebras/lie_algebras/subalgebra.py +967 -0
  57. sage/algebras/lie_algebras/symplectic_derivation.py +289 -0
  58. sage/algebras/lie_algebras/verma_module.py +1630 -0
  59. sage/algebras/lie_algebras/virasoro.py +1186 -0
  60. sage/algebras/octonion_algebra.cpython-314-x86_64-linux-musl.so +0 -0
  61. sage/algebras/octonion_algebra.pxd +20 -0
  62. sage/algebras/octonion_algebra.pyx +987 -0
  63. sage/algebras/orlik_solomon.py +907 -0
  64. sage/algebras/orlik_terao.py +779 -0
  65. sage/algebras/steenrod/all.py +7 -0
  66. sage/algebras/steenrod/steenrod_algebra.py +4258 -0
  67. sage/algebras/steenrod/steenrod_algebra_bases.py +1179 -0
  68. sage/algebras/steenrod/steenrod_algebra_misc.py +1167 -0
  69. sage/algebras/steenrod/steenrod_algebra_mult.py +954 -0
  70. sage/algebras/weyl_algebra.py +1126 -0
  71. sage/all__sagemath_modules.py +62 -0
  72. sage/calculus/all__sagemath_modules.py +19 -0
  73. sage/calculus/expr.py +205 -0
  74. sage/calculus/integration.cpython-314-x86_64-linux-musl.so +0 -0
  75. sage/calculus/integration.pyx +698 -0
  76. sage/calculus/interpolation.cpython-314-x86_64-linux-musl.so +0 -0
  77. sage/calculus/interpolation.pxd +13 -0
  78. sage/calculus/interpolation.pyx +387 -0
  79. sage/calculus/interpolators.cpython-314-x86_64-linux-musl.so +0 -0
  80. sage/calculus/interpolators.pyx +326 -0
  81. sage/calculus/ode.cpython-314-x86_64-linux-musl.so +0 -0
  82. sage/calculus/ode.pxd +5 -0
  83. sage/calculus/ode.pyx +610 -0
  84. sage/calculus/riemann.cpython-314-x86_64-linux-musl.so +0 -0
  85. sage/calculus/riemann.pyx +1521 -0
  86. sage/calculus/test_sympy.py +201 -0
  87. sage/calculus/transforms/all.py +7 -0
  88. sage/calculus/transforms/dft.py +844 -0
  89. sage/calculus/transforms/dwt.cpython-314-x86_64-linux-musl.so +0 -0
  90. sage/calculus/transforms/dwt.pxd +7 -0
  91. sage/calculus/transforms/dwt.pyx +160 -0
  92. sage/calculus/transforms/fft.cpython-314-x86_64-linux-musl.so +0 -0
  93. sage/calculus/transforms/fft.pxd +12 -0
  94. sage/calculus/transforms/fft.pyx +487 -0
  95. sage/calculus/wester.py +662 -0
  96. sage/coding/abstract_code.py +1108 -0
  97. sage/coding/ag_code.py +868 -0
  98. sage/coding/ag_code_decoders.cpython-314-x86_64-linux-musl.so +0 -0
  99. sage/coding/ag_code_decoders.pyx +2639 -0
  100. sage/coding/all.py +15 -0
  101. sage/coding/bch_code.py +494 -0
  102. sage/coding/binary_code.cpython-314-x86_64-linux-musl.so +0 -0
  103. sage/coding/binary_code.pxd +124 -0
  104. sage/coding/binary_code.pyx +4139 -0
  105. sage/coding/bounds_catalog.py +43 -0
  106. sage/coding/channel.py +819 -0
  107. sage/coding/channels_catalog.py +29 -0
  108. sage/coding/code_bounds.py +755 -0
  109. sage/coding/code_constructions.py +804 -0
  110. sage/coding/codes_catalog.py +111 -0
  111. sage/coding/cyclic_code.py +1329 -0
  112. sage/coding/databases.py +316 -0
  113. sage/coding/decoder.py +373 -0
  114. sage/coding/decoders_catalog.py +88 -0
  115. sage/coding/delsarte_bounds.py +709 -0
  116. sage/coding/encoder.py +390 -0
  117. sage/coding/encoders_catalog.py +64 -0
  118. sage/coding/extended_code.py +468 -0
  119. sage/coding/gabidulin_code.py +1058 -0
  120. sage/coding/golay_code.py +404 -0
  121. sage/coding/goppa_code.py +441 -0
  122. sage/coding/grs_code.py +2371 -0
  123. sage/coding/guava.py +107 -0
  124. sage/coding/guruswami_sudan/all.py +1 -0
  125. sage/coding/guruswami_sudan/gs_decoder.py +897 -0
  126. sage/coding/guruswami_sudan/interpolation.py +409 -0
  127. sage/coding/guruswami_sudan/utils.py +176 -0
  128. sage/coding/hamming_code.py +176 -0
  129. sage/coding/information_set_decoder.py +1032 -0
  130. sage/coding/kasami_codes.cpython-314-x86_64-linux-musl.so +0 -0
  131. sage/coding/kasami_codes.pyx +351 -0
  132. sage/coding/linear_code.py +3067 -0
  133. sage/coding/linear_code_no_metric.py +1354 -0
  134. sage/coding/linear_rank_metric.py +961 -0
  135. sage/coding/parity_check_code.py +353 -0
  136. sage/coding/punctured_code.py +719 -0
  137. sage/coding/reed_muller_code.py +999 -0
  138. sage/coding/self_dual_codes.py +942 -0
  139. sage/coding/source_coding/all.py +2 -0
  140. sage/coding/source_coding/huffman.py +553 -0
  141. sage/coding/subfield_subcode.py +423 -0
  142. sage/coding/two_weight_db.py +399 -0
  143. sage/combinat/all__sagemath_modules.py +7 -0
  144. sage/combinat/cartesian_product.py +347 -0
  145. sage/combinat/family.py +11 -0
  146. sage/combinat/free_module.py +1977 -0
  147. sage/combinat/root_system/all.py +147 -0
  148. sage/combinat/root_system/ambient_space.py +527 -0
  149. sage/combinat/root_system/associahedron.py +471 -0
  150. sage/combinat/root_system/braid_move_calculator.py +143 -0
  151. sage/combinat/root_system/braid_orbit.cpython-314-x86_64-linux-musl.so +0 -0
  152. sage/combinat/root_system/braid_orbit.pyx +144 -0
  153. sage/combinat/root_system/branching_rules.py +2301 -0
  154. sage/combinat/root_system/cartan_matrix.py +1245 -0
  155. sage/combinat/root_system/cartan_type.py +3069 -0
  156. sage/combinat/root_system/coxeter_group.py +162 -0
  157. sage/combinat/root_system/coxeter_matrix.py +1261 -0
  158. sage/combinat/root_system/coxeter_type.py +681 -0
  159. sage/combinat/root_system/dynkin_diagram.py +900 -0
  160. sage/combinat/root_system/extended_affine_weyl_group.py +2993 -0
  161. sage/combinat/root_system/fundamental_group.py +795 -0
  162. sage/combinat/root_system/hecke_algebra_representation.py +1203 -0
  163. sage/combinat/root_system/integrable_representations.py +1227 -0
  164. sage/combinat/root_system/non_symmetric_macdonald_polynomials.py +1965 -0
  165. sage/combinat/root_system/pieri_factors.py +1147 -0
  166. sage/combinat/root_system/plot.py +1615 -0
  167. sage/combinat/root_system/root_lattice_realization_algebras.py +1214 -0
  168. sage/combinat/root_system/root_lattice_realizations.py +4628 -0
  169. sage/combinat/root_system/root_space.py +487 -0
  170. sage/combinat/root_system/root_system.py +882 -0
  171. sage/combinat/root_system/type_A.py +348 -0
  172. sage/combinat/root_system/type_A_affine.py +227 -0
  173. sage/combinat/root_system/type_A_infinity.py +241 -0
  174. sage/combinat/root_system/type_B.py +347 -0
  175. sage/combinat/root_system/type_BC_affine.py +287 -0
  176. sage/combinat/root_system/type_B_affine.py +216 -0
  177. sage/combinat/root_system/type_C.py +317 -0
  178. sage/combinat/root_system/type_C_affine.py +188 -0
  179. sage/combinat/root_system/type_D.py +357 -0
  180. sage/combinat/root_system/type_D_affine.py +208 -0
  181. sage/combinat/root_system/type_E.py +641 -0
  182. sage/combinat/root_system/type_E_affine.py +231 -0
  183. sage/combinat/root_system/type_F.py +387 -0
  184. sage/combinat/root_system/type_F_affine.py +137 -0
  185. sage/combinat/root_system/type_G.py +293 -0
  186. sage/combinat/root_system/type_G_affine.py +132 -0
  187. sage/combinat/root_system/type_H.py +105 -0
  188. sage/combinat/root_system/type_I.py +110 -0
  189. sage/combinat/root_system/type_Q.py +150 -0
  190. sage/combinat/root_system/type_affine.py +509 -0
  191. sage/combinat/root_system/type_dual.py +704 -0
  192. sage/combinat/root_system/type_folded.py +301 -0
  193. sage/combinat/root_system/type_marked.py +748 -0
  194. sage/combinat/root_system/type_reducible.py +601 -0
  195. sage/combinat/root_system/type_relabel.py +730 -0
  196. sage/combinat/root_system/type_super_A.py +837 -0
  197. sage/combinat/root_system/weight_lattice_realizations.py +1188 -0
  198. sage/combinat/root_system/weight_space.py +639 -0
  199. sage/combinat/root_system/weyl_characters.py +2238 -0
  200. sage/crypto/__init__.py +4 -0
  201. sage/crypto/all.py +28 -0
  202. sage/crypto/block_cipher/all.py +7 -0
  203. sage/crypto/block_cipher/des.py +1065 -0
  204. sage/crypto/block_cipher/miniaes.py +2171 -0
  205. sage/crypto/block_cipher/present.py +909 -0
  206. sage/crypto/block_cipher/sdes.py +1527 -0
  207. sage/crypto/boolean_function.cpython-314-x86_64-linux-musl.so +0 -0
  208. sage/crypto/boolean_function.pxd +10 -0
  209. sage/crypto/boolean_function.pyx +1487 -0
  210. sage/crypto/cipher.py +78 -0
  211. sage/crypto/classical.py +3668 -0
  212. sage/crypto/classical_cipher.py +569 -0
  213. sage/crypto/cryptosystem.py +387 -0
  214. sage/crypto/key_exchange/all.py +7 -0
  215. sage/crypto/key_exchange/catalog.py +24 -0
  216. sage/crypto/key_exchange/diffie_hellman.py +323 -0
  217. sage/crypto/key_exchange/key_exchange_scheme.py +107 -0
  218. sage/crypto/lattice.py +312 -0
  219. sage/crypto/lfsr.py +295 -0
  220. sage/crypto/lwe.py +840 -0
  221. sage/crypto/mq/__init__.py +4 -0
  222. sage/crypto/mq/mpolynomialsystemgenerator.py +204 -0
  223. sage/crypto/mq/rijndael_gf.py +2345 -0
  224. sage/crypto/mq/sbox.py +7 -0
  225. sage/crypto/mq/sr.py +3344 -0
  226. sage/crypto/public_key/all.py +5 -0
  227. sage/crypto/public_key/blum_goldwasser.py +776 -0
  228. sage/crypto/sbox.cpython-314-x86_64-linux-musl.so +0 -0
  229. sage/crypto/sbox.pyx +2090 -0
  230. sage/crypto/sboxes.py +2090 -0
  231. sage/crypto/stream.py +390 -0
  232. sage/crypto/stream_cipher.py +297 -0
  233. sage/crypto/util.py +519 -0
  234. sage/ext/all__sagemath_modules.py +1 -0
  235. sage/ext/interpreters/__init__.py +1 -0
  236. sage/ext/interpreters/all__sagemath_modules.py +2 -0
  237. sage/ext/interpreters/wrapper_cc.cpython-314-x86_64-linux-musl.so +0 -0
  238. sage/ext/interpreters/wrapper_cc.pxd +30 -0
  239. sage/ext/interpreters/wrapper_cc.pyx +252 -0
  240. sage/ext/interpreters/wrapper_cdf.cpython-314-x86_64-linux-musl.so +0 -0
  241. sage/ext/interpreters/wrapper_cdf.pxd +26 -0
  242. sage/ext/interpreters/wrapper_cdf.pyx +245 -0
  243. sage/ext/interpreters/wrapper_rdf.cpython-314-x86_64-linux-musl.so +0 -0
  244. sage/ext/interpreters/wrapper_rdf.pxd +23 -0
  245. sage/ext/interpreters/wrapper_rdf.pyx +221 -0
  246. sage/ext/interpreters/wrapper_rr.cpython-314-x86_64-linux-musl.so +0 -0
  247. sage/ext/interpreters/wrapper_rr.pxd +28 -0
  248. sage/ext/interpreters/wrapper_rr.pyx +335 -0
  249. sage/geometry/all__sagemath_modules.py +5 -0
  250. sage/geometry/toric_lattice.py +1745 -0
  251. sage/geometry/toric_lattice_element.cpython-314-x86_64-linux-musl.so +0 -0
  252. sage/geometry/toric_lattice_element.pyx +432 -0
  253. sage/groups/abelian_gps/abelian_group.py +1925 -0
  254. sage/groups/abelian_gps/abelian_group_element.py +164 -0
  255. sage/groups/abelian_gps/all__sagemath_modules.py +5 -0
  256. sage/groups/abelian_gps/dual_abelian_group.py +421 -0
  257. sage/groups/abelian_gps/dual_abelian_group_element.py +179 -0
  258. sage/groups/abelian_gps/element_base.py +341 -0
  259. sage/groups/abelian_gps/values.py +488 -0
  260. sage/groups/additive_abelian/additive_abelian_group.py +476 -0
  261. sage/groups/additive_abelian/additive_abelian_wrapper.py +857 -0
  262. sage/groups/additive_abelian/all.py +4 -0
  263. sage/groups/additive_abelian/qmodnz.py +231 -0
  264. sage/groups/additive_abelian/qmodnz_element.py +349 -0
  265. sage/groups/affine_gps/affine_group.py +535 -0
  266. sage/groups/affine_gps/all.py +1 -0
  267. sage/groups/affine_gps/catalog.py +17 -0
  268. sage/groups/affine_gps/euclidean_group.py +246 -0
  269. sage/groups/affine_gps/group_element.py +562 -0
  270. sage/groups/all__sagemath_modules.py +12 -0
  271. sage/groups/galois_group.py +479 -0
  272. sage/groups/matrix_gps/all.py +4 -0
  273. sage/groups/matrix_gps/all__sagemath_modules.py +13 -0
  274. sage/groups/matrix_gps/catalog.py +26 -0
  275. sage/groups/matrix_gps/coxeter_group.py +927 -0
  276. sage/groups/matrix_gps/finitely_generated.py +487 -0
  277. sage/groups/matrix_gps/group_element.cpython-314-x86_64-linux-musl.so +0 -0
  278. sage/groups/matrix_gps/group_element.pxd +11 -0
  279. sage/groups/matrix_gps/group_element.pyx +431 -0
  280. sage/groups/matrix_gps/linear.py +440 -0
  281. sage/groups/matrix_gps/matrix_group.py +617 -0
  282. sage/groups/matrix_gps/named_group.py +296 -0
  283. sage/groups/matrix_gps/orthogonal.py +544 -0
  284. sage/groups/matrix_gps/symplectic.py +251 -0
  285. sage/groups/matrix_gps/unitary.py +436 -0
  286. sage/groups/misc_gps/all__sagemath_modules.py +1 -0
  287. sage/groups/misc_gps/argument_groups.py +1905 -0
  288. sage/groups/misc_gps/imaginary_groups.py +479 -0
  289. sage/groups/perm_gps/all__sagemath_modules.py +1 -0
  290. sage/groups/perm_gps/partn_ref/all__sagemath_modules.py +1 -0
  291. sage/groups/perm_gps/partn_ref/refinement_binary.cpython-314-x86_64-linux-musl.so +0 -0
  292. sage/groups/perm_gps/partn_ref/refinement_binary.pxd +41 -0
  293. sage/groups/perm_gps/partn_ref/refinement_binary.pyx +1167 -0
  294. sage/groups/perm_gps/partn_ref/refinement_matrices.cpython-314-x86_64-linux-musl.so +0 -0
  295. sage/groups/perm_gps/partn_ref/refinement_matrices.pxd +31 -0
  296. sage/groups/perm_gps/partn_ref/refinement_matrices.pyx +385 -0
  297. sage/homology/algebraic_topological_model.py +595 -0
  298. sage/homology/all.py +2 -0
  299. sage/homology/all__sagemath_modules.py +8 -0
  300. sage/homology/chain_complex.py +2148 -0
  301. sage/homology/chain_complex_homspace.py +165 -0
  302. sage/homology/chain_complex_morphism.py +629 -0
  303. sage/homology/chain_homotopy.py +604 -0
  304. sage/homology/chains.py +653 -0
  305. sage/homology/free_resolution.py +923 -0
  306. sage/homology/graded_resolution.py +567 -0
  307. sage/homology/hochschild_complex.py +756 -0
  308. sage/homology/homology_group.py +188 -0
  309. sage/homology/homology_morphism.py +422 -0
  310. sage/homology/homology_vector_space_with_basis.py +1454 -0
  311. sage/homology/koszul_complex.py +169 -0
  312. sage/homology/matrix_utils.py +205 -0
  313. sage/libs/all__sagemath_modules.py +1 -0
  314. sage/libs/gsl/__init__.py +1 -0
  315. sage/libs/gsl/airy.pxd +56 -0
  316. sage/libs/gsl/all.pxd +66 -0
  317. sage/libs/gsl/array.cpython-314-x86_64-linux-musl.so +0 -0
  318. sage/libs/gsl/array.pxd +5 -0
  319. sage/libs/gsl/array.pyx +102 -0
  320. sage/libs/gsl/bessel.pxd +208 -0
  321. sage/libs/gsl/blas.pxd +116 -0
  322. sage/libs/gsl/blas_types.pxd +34 -0
  323. sage/libs/gsl/block.pxd +52 -0
  324. sage/libs/gsl/chebyshev.pxd +37 -0
  325. sage/libs/gsl/clausen.pxd +12 -0
  326. sage/libs/gsl/combination.pxd +47 -0
  327. sage/libs/gsl/complex.pxd +151 -0
  328. sage/libs/gsl/coulomb.pxd +30 -0
  329. sage/libs/gsl/coupling.pxd +21 -0
  330. sage/libs/gsl/dawson.pxd +12 -0
  331. sage/libs/gsl/debye.pxd +24 -0
  332. sage/libs/gsl/dilog.pxd +14 -0
  333. sage/libs/gsl/eigen.pxd +46 -0
  334. sage/libs/gsl/elementary.pxd +12 -0
  335. sage/libs/gsl/ellint.pxd +48 -0
  336. sage/libs/gsl/elljac.pxd +8 -0
  337. sage/libs/gsl/erf.pxd +32 -0
  338. sage/libs/gsl/errno.pxd +26 -0
  339. sage/libs/gsl/exp.pxd +44 -0
  340. sage/libs/gsl/expint.pxd +44 -0
  341. sage/libs/gsl/fermi_dirac.pxd +44 -0
  342. sage/libs/gsl/fft.pxd +121 -0
  343. sage/libs/gsl/fit.pxd +50 -0
  344. sage/libs/gsl/gamma.pxd +94 -0
  345. sage/libs/gsl/gegenbauer.pxd +26 -0
  346. sage/libs/gsl/histogram.pxd +176 -0
  347. sage/libs/gsl/hyperg.pxd +52 -0
  348. sage/libs/gsl/integration.pxd +69 -0
  349. sage/libs/gsl/interp.pxd +109 -0
  350. sage/libs/gsl/laguerre.pxd +24 -0
  351. sage/libs/gsl/lambert.pxd +16 -0
  352. sage/libs/gsl/legendre.pxd +90 -0
  353. sage/libs/gsl/linalg.pxd +185 -0
  354. sage/libs/gsl/log.pxd +26 -0
  355. sage/libs/gsl/math.pxd +43 -0
  356. sage/libs/gsl/matrix.pxd +143 -0
  357. sage/libs/gsl/matrix_complex.pxd +130 -0
  358. sage/libs/gsl/min.pxd +67 -0
  359. sage/libs/gsl/monte.pxd +56 -0
  360. sage/libs/gsl/ntuple.pxd +32 -0
  361. sage/libs/gsl/odeiv.pxd +70 -0
  362. sage/libs/gsl/permutation.pxd +78 -0
  363. sage/libs/gsl/poly.pxd +40 -0
  364. sage/libs/gsl/pow_int.pxd +12 -0
  365. sage/libs/gsl/psi.pxd +28 -0
  366. sage/libs/gsl/qrng.pxd +29 -0
  367. sage/libs/gsl/random.pxd +257 -0
  368. sage/libs/gsl/rng.pxd +100 -0
  369. sage/libs/gsl/roots.pxd +72 -0
  370. sage/libs/gsl/sort.pxd +36 -0
  371. sage/libs/gsl/statistics.pxd +59 -0
  372. sage/libs/gsl/sum.pxd +55 -0
  373. sage/libs/gsl/synchrotron.pxd +16 -0
  374. sage/libs/gsl/transport.pxd +24 -0
  375. sage/libs/gsl/trig.pxd +58 -0
  376. sage/libs/gsl/types.pxd +137 -0
  377. sage/libs/gsl/vector.pxd +101 -0
  378. sage/libs/gsl/vector_complex.pxd +83 -0
  379. sage/libs/gsl/wavelet.pxd +49 -0
  380. sage/libs/gsl/zeta.pxd +28 -0
  381. sage/libs/mpc/__init__.pxd +114 -0
  382. sage/libs/mpc/types.pxd +28 -0
  383. sage/libs/mpfr/__init__.pxd +299 -0
  384. sage/libs/mpfr/types.pxd +26 -0
  385. sage/libs/mpmath/__init__.py +1 -0
  386. sage/libs/mpmath/all.py +27 -0
  387. sage/libs/mpmath/all__sagemath_modules.py +1 -0
  388. sage/libs/mpmath/utils.cpython-314-x86_64-linux-musl.so +0 -0
  389. sage/libs/mpmath/utils.pxd +4 -0
  390. sage/libs/mpmath/utils.pyx +319 -0
  391. sage/matrix/action.cpython-314-x86_64-linux-musl.so +0 -0
  392. sage/matrix/action.pxd +26 -0
  393. sage/matrix/action.pyx +596 -0
  394. sage/matrix/all.py +9 -0
  395. sage/matrix/args.cpython-314-x86_64-linux-musl.so +0 -0
  396. sage/matrix/args.pxd +144 -0
  397. sage/matrix/args.pyx +1668 -0
  398. sage/matrix/benchmark.py +1258 -0
  399. sage/matrix/berlekamp_massey.py +95 -0
  400. sage/matrix/compute_J_ideal.py +926 -0
  401. sage/matrix/constructor.cpython-314-x86_64-linux-musl.so +0 -0
  402. sage/matrix/constructor.pyx +750 -0
  403. sage/matrix/docs.py +430 -0
  404. sage/matrix/echelon_matrix.cpython-314-x86_64-linux-musl.so +0 -0
  405. sage/matrix/echelon_matrix.pyx +155 -0
  406. sage/matrix/matrix.pxd +2 -0
  407. sage/matrix/matrix0.cpython-314-x86_64-linux-musl.so +0 -0
  408. sage/matrix/matrix0.pxd +68 -0
  409. sage/matrix/matrix0.pyx +6324 -0
  410. sage/matrix/matrix1.cpython-314-x86_64-linux-musl.so +0 -0
  411. sage/matrix/matrix1.pxd +8 -0
  412. sage/matrix/matrix1.pyx +2851 -0
  413. sage/matrix/matrix2.cpython-314-x86_64-linux-musl.so +0 -0
  414. sage/matrix/matrix2.pxd +25 -0
  415. sage/matrix/matrix2.pyx +20181 -0
  416. sage/matrix/matrix_cdv.cpython-314-x86_64-linux-musl.so +0 -0
  417. sage/matrix/matrix_cdv.pxd +4 -0
  418. sage/matrix/matrix_cdv.pyx +93 -0
  419. sage/matrix/matrix_complex_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  420. sage/matrix/matrix_complex_double_dense.pxd +5 -0
  421. sage/matrix/matrix_complex_double_dense.pyx +98 -0
  422. sage/matrix/matrix_dense.cpython-314-x86_64-linux-musl.so +0 -0
  423. sage/matrix/matrix_dense.pxd +5 -0
  424. sage/matrix/matrix_dense.pyx +343 -0
  425. sage/matrix/matrix_domain_dense.pxd +5 -0
  426. sage/matrix/matrix_domain_sparse.pxd +5 -0
  427. sage/matrix/matrix_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  428. sage/matrix/matrix_double_dense.pxd +7 -0
  429. sage/matrix/matrix_double_dense.pyx +3906 -0
  430. sage/matrix/matrix_double_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  431. sage/matrix/matrix_double_sparse.pxd +6 -0
  432. sage/matrix/matrix_double_sparse.pyx +248 -0
  433. sage/matrix/matrix_generic_dense.cpython-314-x86_64-linux-musl.so +0 -0
  434. sage/matrix/matrix_generic_dense.pxd +7 -0
  435. sage/matrix/matrix_generic_dense.pyx +354 -0
  436. sage/matrix/matrix_generic_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  437. sage/matrix/matrix_generic_sparse.pxd +7 -0
  438. sage/matrix/matrix_generic_sparse.pyx +461 -0
  439. sage/matrix/matrix_laurent_mpolynomial_dense.cpython-314-x86_64-linux-musl.so +0 -0
  440. sage/matrix/matrix_laurent_mpolynomial_dense.pxd +5 -0
  441. sage/matrix/matrix_laurent_mpolynomial_dense.pyx +115 -0
  442. sage/matrix/matrix_misc.py +313 -0
  443. sage/matrix/matrix_numpy_dense.cpython-314-x86_64-linux-musl.so +0 -0
  444. sage/matrix/matrix_numpy_dense.pxd +14 -0
  445. sage/matrix/matrix_numpy_dense.pyx +450 -0
  446. sage/matrix/matrix_numpy_integer_dense.cpython-314-x86_64-linux-musl.so +0 -0
  447. sage/matrix/matrix_numpy_integer_dense.pxd +7 -0
  448. sage/matrix/matrix_numpy_integer_dense.pyx +59 -0
  449. sage/matrix/matrix_polynomial_dense.cpython-314-x86_64-linux-musl.so +0 -0
  450. sage/matrix/matrix_polynomial_dense.pxd +5 -0
  451. sage/matrix/matrix_polynomial_dense.pyx +5341 -0
  452. sage/matrix/matrix_real_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  453. sage/matrix/matrix_real_double_dense.pxd +7 -0
  454. sage/matrix/matrix_real_double_dense.pyx +122 -0
  455. sage/matrix/matrix_space.py +2848 -0
  456. sage/matrix/matrix_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  457. sage/matrix/matrix_sparse.pxd +5 -0
  458. sage/matrix/matrix_sparse.pyx +1222 -0
  459. sage/matrix/matrix_window.cpython-314-x86_64-linux-musl.so +0 -0
  460. sage/matrix/matrix_window.pxd +37 -0
  461. sage/matrix/matrix_window.pyx +242 -0
  462. sage/matrix/misc_mpfr.cpython-314-x86_64-linux-musl.so +0 -0
  463. sage/matrix/misc_mpfr.pyx +80 -0
  464. sage/matrix/operation_table.py +1182 -0
  465. sage/matrix/special.py +3666 -0
  466. sage/matrix/strassen.cpython-314-x86_64-linux-musl.so +0 -0
  467. sage/matrix/strassen.pyx +851 -0
  468. sage/matrix/symplectic_basis.py +541 -0
  469. sage/matrix/template.pxd +6 -0
  470. sage/matrix/tests.py +71 -0
  471. sage/matroids/advanced.py +77 -0
  472. sage/matroids/all.py +13 -0
  473. sage/matroids/basis_exchange_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  474. sage/matroids/basis_exchange_matroid.pxd +96 -0
  475. sage/matroids/basis_exchange_matroid.pyx +2344 -0
  476. sage/matroids/basis_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  477. sage/matroids/basis_matroid.pxd +45 -0
  478. sage/matroids/basis_matroid.pyx +1217 -0
  479. sage/matroids/catalog.py +44 -0
  480. sage/matroids/chow_ring.py +473 -0
  481. sage/matroids/chow_ring_ideal.py +849 -0
  482. sage/matroids/circuit_closures_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  483. sage/matroids/circuit_closures_matroid.pxd +16 -0
  484. sage/matroids/circuit_closures_matroid.pyx +559 -0
  485. sage/matroids/circuits_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  486. sage/matroids/circuits_matroid.pxd +38 -0
  487. sage/matroids/circuits_matroid.pyx +947 -0
  488. sage/matroids/constructor.py +1086 -0
  489. sage/matroids/database_collections.py +365 -0
  490. sage/matroids/database_matroids.py +5338 -0
  491. sage/matroids/dual_matroid.py +583 -0
  492. sage/matroids/extension.cpython-314-x86_64-linux-musl.so +0 -0
  493. sage/matroids/extension.pxd +34 -0
  494. sage/matroids/extension.pyx +519 -0
  495. sage/matroids/flats_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  496. sage/matroids/flats_matroid.pxd +28 -0
  497. sage/matroids/flats_matroid.pyx +715 -0
  498. sage/matroids/gammoid.py +600 -0
  499. sage/matroids/graphic_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  500. sage/matroids/graphic_matroid.pxd +39 -0
  501. sage/matroids/graphic_matroid.pyx +2024 -0
  502. sage/matroids/lean_matrix.cpython-314-x86_64-linux-musl.so +0 -0
  503. sage/matroids/lean_matrix.pxd +126 -0
  504. sage/matroids/lean_matrix.pyx +3667 -0
  505. sage/matroids/linear_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  506. sage/matroids/linear_matroid.pxd +180 -0
  507. sage/matroids/linear_matroid.pyx +6649 -0
  508. sage/matroids/matroid.cpython-314-x86_64-linux-musl.so +0 -0
  509. sage/matroids/matroid.pxd +243 -0
  510. sage/matroids/matroid.pyx +8759 -0
  511. sage/matroids/matroids_catalog.py +190 -0
  512. sage/matroids/matroids_plot_helpers.py +890 -0
  513. sage/matroids/minor_matroid.py +480 -0
  514. sage/matroids/minorfix.h +9 -0
  515. sage/matroids/named_matroids.py +5 -0
  516. sage/matroids/rank_matroid.py +268 -0
  517. sage/matroids/set_system.cpython-314-x86_64-linux-musl.so +0 -0
  518. sage/matroids/set_system.pxd +38 -0
  519. sage/matroids/set_system.pyx +800 -0
  520. sage/matroids/transversal_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  521. sage/matroids/transversal_matroid.pxd +14 -0
  522. sage/matroids/transversal_matroid.pyx +893 -0
  523. sage/matroids/union_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  524. sage/matroids/union_matroid.pxd +20 -0
  525. sage/matroids/union_matroid.pyx +331 -0
  526. sage/matroids/unpickling.cpython-314-x86_64-linux-musl.so +0 -0
  527. sage/matroids/unpickling.pyx +843 -0
  528. sage/matroids/utilities.py +809 -0
  529. sage/misc/all__sagemath_modules.py +20 -0
  530. sage/misc/c3.cpython-314-x86_64-linux-musl.so +0 -0
  531. sage/misc/c3.pyx +238 -0
  532. sage/misc/compat.py +87 -0
  533. sage/misc/element_with_label.py +173 -0
  534. sage/misc/func_persist.py +79 -0
  535. sage/misc/pickle_old.cpython-314-x86_64-linux-musl.so +0 -0
  536. sage/misc/pickle_old.pyx +19 -0
  537. sage/misc/proof.py +7 -0
  538. sage/misc/replace_dot_all.py +472 -0
  539. sage/misc/sagedoc_conf.py +168 -0
  540. sage/misc/sphinxify.py +167 -0
  541. sage/misc/test_class_pickling.py +85 -0
  542. sage/modules/all.py +42 -0
  543. sage/modules/complex_double_vector.py +25 -0
  544. sage/modules/diamond_cutting.py +380 -0
  545. sage/modules/fg_pid/all.py +1 -0
  546. sage/modules/fg_pid/fgp_element.py +456 -0
  547. sage/modules/fg_pid/fgp_module.py +2091 -0
  548. sage/modules/fg_pid/fgp_morphism.py +550 -0
  549. sage/modules/filtered_vector_space.py +1271 -0
  550. sage/modules/finite_submodule_iter.cpython-314-x86_64-linux-musl.so +0 -0
  551. sage/modules/finite_submodule_iter.pxd +27 -0
  552. sage/modules/finite_submodule_iter.pyx +452 -0
  553. sage/modules/fp_graded/all.py +1 -0
  554. sage/modules/fp_graded/element.py +346 -0
  555. sage/modules/fp_graded/free_element.py +298 -0
  556. sage/modules/fp_graded/free_homspace.py +53 -0
  557. sage/modules/fp_graded/free_module.py +1060 -0
  558. sage/modules/fp_graded/free_morphism.py +217 -0
  559. sage/modules/fp_graded/homspace.py +563 -0
  560. sage/modules/fp_graded/module.py +1340 -0
  561. sage/modules/fp_graded/morphism.py +1990 -0
  562. sage/modules/fp_graded/steenrod/all.py +1 -0
  563. sage/modules/fp_graded/steenrod/homspace.py +65 -0
  564. sage/modules/fp_graded/steenrod/module.py +477 -0
  565. sage/modules/fp_graded/steenrod/morphism.py +404 -0
  566. sage/modules/fp_graded/steenrod/profile.py +241 -0
  567. sage/modules/free_module.py +8447 -0
  568. sage/modules/free_module_element.cpython-314-x86_64-linux-musl.so +0 -0
  569. sage/modules/free_module_element.pxd +22 -0
  570. sage/modules/free_module_element.pyx +5445 -0
  571. sage/modules/free_module_homspace.py +369 -0
  572. sage/modules/free_module_integer.py +896 -0
  573. sage/modules/free_module_morphism.py +823 -0
  574. sage/modules/free_module_pseudohomspace.py +352 -0
  575. sage/modules/free_module_pseudomorphism.py +578 -0
  576. sage/modules/free_quadratic_module.py +1706 -0
  577. sage/modules/free_quadratic_module_integer_symmetric.py +1790 -0
  578. sage/modules/matrix_morphism.py +1745 -0
  579. sage/modules/misc.py +103 -0
  580. sage/modules/module_functors.py +192 -0
  581. sage/modules/multi_filtered_vector_space.py +719 -0
  582. sage/modules/ore_module.py +2208 -0
  583. sage/modules/ore_module_element.py +178 -0
  584. sage/modules/ore_module_homspace.py +147 -0
  585. sage/modules/ore_module_morphism.py +968 -0
  586. sage/modules/quotient_module.py +699 -0
  587. sage/modules/real_double_vector.py +22 -0
  588. sage/modules/submodule.py +255 -0
  589. sage/modules/tensor_operations.py +567 -0
  590. sage/modules/torsion_quadratic_module.py +1352 -0
  591. sage/modules/tutorial_free_modules.py +248 -0
  592. sage/modules/vector_complex_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  593. sage/modules/vector_complex_double_dense.pxd +6 -0
  594. sage/modules/vector_complex_double_dense.pyx +117 -0
  595. sage/modules/vector_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  596. sage/modules/vector_double_dense.pxd +6 -0
  597. sage/modules/vector_double_dense.pyx +604 -0
  598. sage/modules/vector_integer_dense.cpython-314-x86_64-linux-musl.so +0 -0
  599. sage/modules/vector_integer_dense.pxd +15 -0
  600. sage/modules/vector_integer_dense.pyx +361 -0
  601. sage/modules/vector_integer_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  602. sage/modules/vector_integer_sparse.pxd +29 -0
  603. sage/modules/vector_integer_sparse.pyx +406 -0
  604. sage/modules/vector_modn_dense.cpython-314-x86_64-linux-musl.so +0 -0
  605. sage/modules/vector_modn_dense.pxd +12 -0
  606. sage/modules/vector_modn_dense.pyx +394 -0
  607. sage/modules/vector_modn_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  608. sage/modules/vector_modn_sparse.pxd +21 -0
  609. sage/modules/vector_modn_sparse.pyx +298 -0
  610. sage/modules/vector_numpy_dense.cpython-314-x86_64-linux-musl.so +0 -0
  611. sage/modules/vector_numpy_dense.pxd +15 -0
  612. sage/modules/vector_numpy_dense.pyx +304 -0
  613. sage/modules/vector_numpy_integer_dense.cpython-314-x86_64-linux-musl.so +0 -0
  614. sage/modules/vector_numpy_integer_dense.pxd +7 -0
  615. sage/modules/vector_numpy_integer_dense.pyx +54 -0
  616. sage/modules/vector_rational_dense.cpython-314-x86_64-linux-musl.so +0 -0
  617. sage/modules/vector_rational_dense.pxd +15 -0
  618. sage/modules/vector_rational_dense.pyx +387 -0
  619. sage/modules/vector_rational_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  620. sage/modules/vector_rational_sparse.pxd +30 -0
  621. sage/modules/vector_rational_sparse.pyx +413 -0
  622. sage/modules/vector_real_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  623. sage/modules/vector_real_double_dense.pxd +6 -0
  624. sage/modules/vector_real_double_dense.pyx +126 -0
  625. sage/modules/vector_space_homspace.py +430 -0
  626. sage/modules/vector_space_morphism.py +989 -0
  627. sage/modules/with_basis/all.py +15 -0
  628. sage/modules/with_basis/cell_module.py +494 -0
  629. sage/modules/with_basis/indexed_element.cpython-314-x86_64-linux-musl.so +0 -0
  630. sage/modules/with_basis/indexed_element.pxd +13 -0
  631. sage/modules/with_basis/indexed_element.pyx +1058 -0
  632. sage/modules/with_basis/invariant.py +1075 -0
  633. sage/modules/with_basis/morphism.py +1636 -0
  634. sage/modules/with_basis/representation.py +2939 -0
  635. sage/modules/with_basis/subquotient.py +685 -0
  636. sage/numerical/all__sagemath_modules.py +6 -0
  637. sage/numerical/gauss_legendre.cpython-314-x86_64-linux-musl.so +0 -0
  638. sage/numerical/gauss_legendre.pyx +381 -0
  639. sage/numerical/optimize.py +910 -0
  640. sage/probability/all.py +10 -0
  641. sage/probability/probability_distribution.cpython-314-x86_64-linux-musl.so +0 -0
  642. sage/probability/probability_distribution.pyx +1242 -0
  643. sage/probability/random_variable.py +411 -0
  644. sage/quadratic_forms/all.py +4 -0
  645. sage/quadratic_forms/all__sagemath_modules.py +15 -0
  646. sage/quadratic_forms/binary_qf.py +2042 -0
  647. sage/quadratic_forms/bqf_class_group.py +748 -0
  648. sage/quadratic_forms/constructions.py +93 -0
  649. sage/quadratic_forms/count_local_2.cpython-314-x86_64-linux-musl.so +0 -0
  650. sage/quadratic_forms/count_local_2.pyx +365 -0
  651. sage/quadratic_forms/extras.py +195 -0
  652. sage/quadratic_forms/quadratic_form.py +1753 -0
  653. sage/quadratic_forms/quadratic_form__count_local_2.py +221 -0
  654. sage/quadratic_forms/quadratic_form__equivalence_testing.py +708 -0
  655. sage/quadratic_forms/quadratic_form__evaluate.cpython-314-x86_64-linux-musl.so +0 -0
  656. sage/quadratic_forms/quadratic_form__evaluate.pyx +139 -0
  657. sage/quadratic_forms/quadratic_form__local_density_congruence.py +977 -0
  658. sage/quadratic_forms/quadratic_form__local_field_invariants.py +1072 -0
  659. sage/quadratic_forms/quadratic_form__neighbors.py +424 -0
  660. sage/quadratic_forms/quadratic_form__reduction_theory.py +488 -0
  661. sage/quadratic_forms/quadratic_form__split_local_covering.py +416 -0
  662. sage/quadratic_forms/quadratic_form__ternary_Tornaria.py +657 -0
  663. sage/quadratic_forms/quadratic_form__theta.py +352 -0
  664. sage/quadratic_forms/quadratic_form__variable_substitutions.py +370 -0
  665. sage/quadratic_forms/random_quadraticform.py +209 -0
  666. sage/quadratic_forms/ternary.cpython-314-x86_64-linux-musl.so +0 -0
  667. sage/quadratic_forms/ternary.pyx +1154 -0
  668. sage/quadratic_forms/ternary_qf.py +2027 -0
  669. sage/rings/all__sagemath_modules.py +28 -0
  670. sage/rings/asymptotic/all__sagemath_modules.py +1 -0
  671. sage/rings/asymptotic/misc.py +1252 -0
  672. sage/rings/cc.py +4 -0
  673. sage/rings/cfinite_sequence.py +1306 -0
  674. sage/rings/complex_conversion.cpython-314-x86_64-linux-musl.so +0 -0
  675. sage/rings/complex_conversion.pxd +8 -0
  676. sage/rings/complex_conversion.pyx +23 -0
  677. sage/rings/complex_double.cpython-314-x86_64-linux-musl.so +0 -0
  678. sage/rings/complex_double.pxd +21 -0
  679. sage/rings/complex_double.pyx +2654 -0
  680. sage/rings/complex_mpc.cpython-314-x86_64-linux-musl.so +0 -0
  681. sage/rings/complex_mpc.pxd +21 -0
  682. sage/rings/complex_mpc.pyx +2576 -0
  683. sage/rings/complex_mpfr.cpython-314-x86_64-linux-musl.so +0 -0
  684. sage/rings/complex_mpfr.pxd +18 -0
  685. sage/rings/complex_mpfr.pyx +3602 -0
  686. sage/rings/derivation.py +2334 -0
  687. sage/rings/finite_rings/all__sagemath_modules.py +1 -0
  688. sage/rings/finite_rings/maps_finite_field.py +191 -0
  689. sage/rings/function_field/all__sagemath_modules.py +8 -0
  690. sage/rings/function_field/derivations.py +102 -0
  691. sage/rings/function_field/derivations_rational.py +132 -0
  692. sage/rings/function_field/differential.py +853 -0
  693. sage/rings/function_field/divisor.py +1107 -0
  694. sage/rings/function_field/drinfeld_modules/action.py +199 -0
  695. sage/rings/function_field/drinfeld_modules/all.py +1 -0
  696. sage/rings/function_field/drinfeld_modules/charzero_drinfeld_module.py +673 -0
  697. sage/rings/function_field/drinfeld_modules/drinfeld_module.py +2087 -0
  698. sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py +1131 -0
  699. sage/rings/function_field/drinfeld_modules/homset.py +420 -0
  700. sage/rings/function_field/drinfeld_modules/morphism.py +820 -0
  701. sage/rings/function_field/hermite_form_polynomial.cpython-314-x86_64-linux-musl.so +0 -0
  702. sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
  703. sage/rings/function_field/khuri_makdisi.cpython-314-x86_64-linux-musl.so +0 -0
  704. sage/rings/function_field/khuri_makdisi.pyx +935 -0
  705. sage/rings/invariants/all.py +4 -0
  706. sage/rings/invariants/invariant_theory.py +4597 -0
  707. sage/rings/invariants/reconstruction.py +395 -0
  708. sage/rings/polynomial/all__sagemath_modules.py +17 -0
  709. sage/rings/polynomial/integer_valued_polynomials.py +1230 -0
  710. sage/rings/polynomial/laurent_polynomial_mpair.cpython-314-x86_64-linux-musl.so +0 -0
  711. sage/rings/polynomial/laurent_polynomial_mpair.pxd +15 -0
  712. sage/rings/polynomial/laurent_polynomial_mpair.pyx +2023 -0
  713. sage/rings/polynomial/ore_function_element.py +952 -0
  714. sage/rings/polynomial/ore_function_field.py +1028 -0
  715. sage/rings/polynomial/ore_polynomial_element.cpython-314-x86_64-linux-musl.so +0 -0
  716. sage/rings/polynomial/ore_polynomial_element.pxd +48 -0
  717. sage/rings/polynomial/ore_polynomial_element.pyx +3145 -0
  718. sage/rings/polynomial/ore_polynomial_ring.py +1334 -0
  719. sage/rings/polynomial/polynomial_real_mpfr_dense.cpython-314-x86_64-linux-musl.so +0 -0
  720. sage/rings/polynomial/polynomial_real_mpfr_dense.pyx +788 -0
  721. sage/rings/polynomial/q_integer_valued_polynomials.py +1264 -0
  722. sage/rings/polynomial/skew_polynomial_element.cpython-314-x86_64-linux-musl.so +0 -0
  723. sage/rings/polynomial/skew_polynomial_element.pxd +9 -0
  724. sage/rings/polynomial/skew_polynomial_element.pyx +684 -0
  725. sage/rings/polynomial/skew_polynomial_finite_field.cpython-314-x86_64-linux-musl.so +0 -0
  726. sage/rings/polynomial/skew_polynomial_finite_field.pxd +19 -0
  727. sage/rings/polynomial/skew_polynomial_finite_field.pyx +1093 -0
  728. sage/rings/polynomial/skew_polynomial_finite_order.cpython-314-x86_64-linux-musl.so +0 -0
  729. sage/rings/polynomial/skew_polynomial_finite_order.pxd +10 -0
  730. sage/rings/polynomial/skew_polynomial_finite_order.pyx +567 -0
  731. sage/rings/polynomial/skew_polynomial_ring.py +908 -0
  732. sage/rings/real_double_element_gsl.cpython-314-x86_64-linux-musl.so +0 -0
  733. sage/rings/real_double_element_gsl.pxd +8 -0
  734. sage/rings/real_double_element_gsl.pyx +794 -0
  735. sage/rings/real_field.py +58 -0
  736. sage/rings/real_mpfr.cpython-314-x86_64-linux-musl.so +0 -0
  737. sage/rings/real_mpfr.pxd +29 -0
  738. sage/rings/real_mpfr.pyx +6122 -0
  739. sage/rings/ring_extension.cpython-314-x86_64-linux-musl.so +0 -0
  740. sage/rings/ring_extension.pxd +42 -0
  741. sage/rings/ring_extension.pyx +2779 -0
  742. sage/rings/ring_extension_conversion.cpython-314-x86_64-linux-musl.so +0 -0
  743. sage/rings/ring_extension_conversion.pxd +16 -0
  744. sage/rings/ring_extension_conversion.pyx +462 -0
  745. sage/rings/ring_extension_element.cpython-314-x86_64-linux-musl.so +0 -0
  746. sage/rings/ring_extension_element.pxd +21 -0
  747. sage/rings/ring_extension_element.pyx +1635 -0
  748. sage/rings/ring_extension_homset.py +64 -0
  749. sage/rings/ring_extension_morphism.cpython-314-x86_64-linux-musl.so +0 -0
  750. sage/rings/ring_extension_morphism.pxd +35 -0
  751. sage/rings/ring_extension_morphism.pyx +920 -0
  752. sage/schemes/all__sagemath_modules.py +1 -0
  753. sage/schemes/projective/all__sagemath_modules.py +1 -0
  754. sage/schemes/projective/coherent_sheaf.py +300 -0
  755. sage/schemes/projective/cohomology.py +510 -0
  756. sage/stats/all.py +15 -0
  757. sage/stats/basic_stats.py +489 -0
  758. sage/stats/distributions/all.py +7 -0
  759. sage/stats/distributions/catalog.py +34 -0
  760. sage/stats/distributions/dgs.h +50 -0
  761. sage/stats/distributions/dgs.pxd +111 -0
  762. sage/stats/distributions/dgs_bern.h +400 -0
  763. sage/stats/distributions/dgs_gauss.h +614 -0
  764. sage/stats/distributions/dgs_misc.h +104 -0
  765. sage/stats/distributions/discrete_gaussian_integer.cpython-314-x86_64-linux-musl.so +0 -0
  766. sage/stats/distributions/discrete_gaussian_integer.pxd +14 -0
  767. sage/stats/distributions/discrete_gaussian_integer.pyx +498 -0
  768. sage/stats/distributions/discrete_gaussian_lattice.py +908 -0
  769. sage/stats/distributions/discrete_gaussian_polynomial.py +141 -0
  770. sage/stats/hmm/all.py +15 -0
  771. sage/stats/hmm/chmm.cpython-314-x86_64-linux-musl.so +0 -0
  772. sage/stats/hmm/chmm.pyx +1595 -0
  773. sage/stats/hmm/distributions.cpython-314-x86_64-linux-musl.so +0 -0
  774. sage/stats/hmm/distributions.pxd +29 -0
  775. sage/stats/hmm/distributions.pyx +531 -0
  776. sage/stats/hmm/hmm.cpython-314-x86_64-linux-musl.so +0 -0
  777. sage/stats/hmm/hmm.pxd +17 -0
  778. sage/stats/hmm/hmm.pyx +1388 -0
  779. sage/stats/hmm/util.cpython-314-x86_64-linux-musl.so +0 -0
  780. sage/stats/hmm/util.pxd +7 -0
  781. sage/stats/hmm/util.pyx +165 -0
  782. sage/stats/intlist.cpython-314-x86_64-linux-musl.so +0 -0
  783. sage/stats/intlist.pxd +14 -0
  784. sage/stats/intlist.pyx +588 -0
  785. sage/stats/r.py +49 -0
  786. sage/stats/time_series.cpython-314-x86_64-linux-musl.so +0 -0
  787. sage/stats/time_series.pxd +6 -0
  788. sage/stats/time_series.pyx +2546 -0
  789. sage/tensor/all.py +2 -0
  790. sage/tensor/modules/all.py +8 -0
  791. sage/tensor/modules/alternating_contr_tensor.py +761 -0
  792. sage/tensor/modules/comp.py +5598 -0
  793. sage/tensor/modules/ext_pow_free_module.py +824 -0
  794. sage/tensor/modules/finite_rank_free_module.py +3589 -0
  795. sage/tensor/modules/format_utilities.py +333 -0
  796. sage/tensor/modules/free_module_alt_form.py +858 -0
  797. sage/tensor/modules/free_module_automorphism.py +1207 -0
  798. sage/tensor/modules/free_module_basis.py +1074 -0
  799. sage/tensor/modules/free_module_element.py +284 -0
  800. sage/tensor/modules/free_module_homset.py +652 -0
  801. sage/tensor/modules/free_module_linear_group.py +564 -0
  802. sage/tensor/modules/free_module_morphism.py +1581 -0
  803. sage/tensor/modules/free_module_tensor.py +3289 -0
  804. sage/tensor/modules/reflexive_module.py +386 -0
  805. sage/tensor/modules/tensor_free_module.py +780 -0
  806. sage/tensor/modules/tensor_free_submodule.py +538 -0
  807. sage/tensor/modules/tensor_free_submodule_basis.py +140 -0
  808. sage/tensor/modules/tensor_with_indices.py +1043 -0
@@ -0,0 +1,709 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ # sage.doctest: needs sage.numerical.mip
3
+ r"""
4
+ Delsarte (or linear programming) bounds
5
+
6
+ This module provides LP upper bounds for the parameters of codes, introduced in
7
+ by P. Delsarte in [De1973]_.
8
+
9
+ The exact LP solver PPL is used by default, ensuring that no
10
+ rounding/overflow problems occur.
11
+
12
+ AUTHORS:
13
+
14
+ - Dmitrii V. (Dima) Pasechnik (2012-10): initial implementation
15
+
16
+ - Dmitrii V. (Dima) Pasechnik (2015, 2021): minor fixes
17
+
18
+ - Charalampos Kokkalis (2021): Eberlein polynomials, general Q matrix codes
19
+ """
20
+ # ****************************************************************************
21
+ # Copyright (C) 2012, 2021 Dima Pasechnik <dimpase@gmail.com>
22
+ # Copyright (C) 2021 Charalampos Kokkalis
23
+ #
24
+ # This program is free software: you can redistribute it and/or modify
25
+ # it under the terms of the GNU General Public License as published by
26
+ # the Free Software Foundation, either version 2 of the License, or
27
+ # (at your option) any later version.
28
+ # https://www.gnu.org/licenses/
29
+ # ****************************************************************************
30
+
31
+
32
+ def krawtchouk(n, q, l, x, check=True):
33
+ r"""
34
+ Compute `K^{n,q}_l(x)`, the Krawtchouk (a.k.a. Kravchuk) polynomial.
35
+
36
+ See :wikipedia:`Kravchuk_polynomials`.
37
+
38
+ It is defined by the generating function
39
+
40
+ .. MATH::
41
+
42
+ (1+(q-1)z)^{n-x}(1-z)^x=\sum_{l} K^{n,q}_l(x)z^l
43
+
44
+ and is equal to
45
+
46
+ .. MATH::
47
+
48
+ K^{n,q}_l(x)=\sum_{j=0}^l (-1)^j (q-1)^{(l-j)} \binom{x}{j} \binom{n-x}{l-j}.
49
+
50
+ INPUT:
51
+
52
+ - ``n``, ``q``, ``x`` -- arbitrary numbers
53
+
54
+ - ``l`` -- nonnegative integer
55
+
56
+ - ``check`` -- check the input for correctness. ``True`` by
57
+ default. Otherwise, pass it as it is. Use ``check=False`` at
58
+ your own risk.
59
+
60
+ .. SEEALSO::
61
+
62
+ :class:`Symbolic Krawtchouk polynomials
63
+ <sage.functions.orthogonal_polys.Func_krawtchouk>` `\tilde{K}_l(x; n, p)`
64
+ which are related by
65
+
66
+ .. MATH::
67
+
68
+ (-q)^l K^{n,q^{-1}}_l(x) = \tilde{K}_l(x; n, 1-q).
69
+
70
+ EXAMPLES::
71
+
72
+ sage: codes.bounds.krawtchouk(24,2,5,4)
73
+ 2224
74
+ sage: codes.bounds.krawtchouk(12300,4,5,6)
75
+ 567785569973042442072
76
+
77
+ TESTS:
78
+
79
+ Check that the bug reported on :issue:`19561` is fixed::
80
+
81
+ sage: codes.bounds.krawtchouk(3,2,3,3)
82
+ -1
83
+ sage: codes.bounds.krawtchouk(int(3),int(2),int(3),int(3))
84
+ -1
85
+ sage: codes.bounds.krawtchouk(int(3),int(2),int(3),int(3),check=False)
86
+ -1.0
87
+ sage: codes.bounds.krawtchouk(24,2,5,4)
88
+ 2224
89
+
90
+ Other unusual inputs::
91
+
92
+ sage: codes.bounds.krawtchouk(sqrt(5),1-I*sqrt(3),3,55.3).n() # needs sage.symbolic
93
+ 211295.892797... + 1186.42763...*I
94
+ sage: codes.bounds.krawtchouk(-5/2,7*I,3,-1/10) # needs sage.symbolic
95
+ 480053/250*I - 357231/400
96
+ sage: codes.bounds.krawtchouk(1,1,-1,1)
97
+ Traceback (most recent call last):
98
+ ...
99
+ ValueError: l must be a nonnegative integer
100
+ sage: codes.bounds.krawtchouk(1,1,3/2,1)
101
+ Traceback (most recent call last):
102
+ ...
103
+ TypeError: no conversion of this rational to integer
104
+ """
105
+ from sage.arith.misc import binomial
106
+ from sage.arith.srange import srange
107
+ # Use the expression in equation (55) of MacWilliams & Sloane, pg 151
108
+ # We write jth term = some_factor * (j-1)th term
109
+ if check:
110
+ from sage.rings.integer_ring import ZZ
111
+ l0 = ZZ(l)
112
+ if l0 != l or l0 < 0:
113
+ raise ValueError('l must be a nonnegative integer')
114
+ l = l0
115
+ kraw = jth_term = (q-1)**l * binomial(n, l) # j=0
116
+ for j in srange(1, l+1):
117
+ jth_term *= -q*(l-j+1)*(x-j+1)/((q-1)*j*(n-j+1))
118
+ kraw += jth_term
119
+ return kraw
120
+
121
+
122
+ def eberlein(n, w, k, u, check=True):
123
+ r"""
124
+ Compute `E^{w,n}_k(x)`, the Eberlein polynomial.
125
+
126
+ See :wikipedia:`Eberlein_polynomials`.
127
+
128
+ It is defined as:
129
+
130
+ .. MATH::
131
+
132
+ E^{w,n}_k(u)=\sum_{j=0}^k (-1)^j \binom{u}{j} \binom{w-u}{k-j}
133
+ \binom{n-w-u}{k-j},
134
+
135
+ INPUT:
136
+
137
+ - ``w``, ``k``, ``x`` -- arbitrary numbers
138
+
139
+ - ``n`` -- nonnegative integer
140
+
141
+ - ``check`` -- check the input for correctness. ``True`` by
142
+ default. Otherwise, pass it as it is. Use ``check=False`` at
143
+ your own risk.
144
+
145
+ EXAMPLES::
146
+
147
+ sage: codes.bounds.eberlein(24,10,2,6)
148
+ -9
149
+
150
+ TESTS:
151
+
152
+ check normal inputs (various formats for arguments) ::
153
+
154
+ sage: codes.bounds.eberlein(24,10,2,6)
155
+ -9
156
+ sage: codes.bounds.eberlein(int(24),int(10),int(2),int(6))
157
+ -9
158
+ sage: codes.bounds.eberlein(int(24),int(10),int(2),int(6),check=False)
159
+ -9
160
+
161
+ unusual inputs ::
162
+
163
+ sage: codes.bounds.eberlein(-1,1,1,1)
164
+ Traceback (most recent call last):
165
+ ...
166
+ ValueError: l must be a nonnegative integer
167
+ sage: codes.bounds.eberlein(1,1,3/2,1)
168
+ Traceback (most recent call last):
169
+ ...
170
+ TypeError: either m or x-m must be an integer
171
+ """
172
+ from sage.arith.misc import binomial
173
+ from sage.arith.srange import srange
174
+
175
+ if 2 * w > n:
176
+ return eberlein(n, n - w, k, u)
177
+
178
+ if check:
179
+ from sage.rings.integer_ring import ZZ
180
+ n0 = ZZ(n)
181
+ if n0 != n or n0 < 0:
182
+ raise ValueError('l must be a nonnegative integer')
183
+ n = n0
184
+
185
+ return sum([(-1)**j*binomial(u, j)*binomial(w-u, k-j)*binomial(n-w-u, k-j)
186
+ for j in srange(k + 1)])
187
+
188
+
189
+ def _delsarte_LP_building(n, d, d_star, q, isinteger, solver, maxc=0):
190
+ r"""
191
+ LP builder - common for the two functions; not exported.
192
+
193
+ EXAMPLES::
194
+
195
+ sage: from sage.coding.delsarte_bounds import _delsarte_LP_building
196
+ sage: _,p=_delsarte_LP_building(7, 3, 0, 2, False, "PPL")
197
+ sage: p.show()
198
+ Maximization:
199
+ x_0 + x_1 + x_2 + x_3 + x_4 + x_5 + x_6 + x_7
200
+ Constraints:
201
+ constraint_0: 1 <= x_0 <= 1
202
+ constraint_1: 0 <= x_1 <= 0
203
+ constraint_2: 0 <= x_2 <= 0
204
+ constraint_3: -7 x_0 - 5 x_1 - 3 x_2 - x_3 + x_4 + 3 x_5 + 5 x_6 + 7 x_7 <= 0
205
+ ...
206
+ constraint_9: - x_0 + x_1 - x_2 + x_3 - x_4 + x_5 - x_6 + x_7 <= 0
207
+ Variables:
208
+ x_0 is a continuous variable (min=0, max=+oo)
209
+ ...
210
+ x_7 is a continuous variable (min=0, max=+oo)
211
+ """
212
+ from sage.numerical.mip import MixedIntegerLinearProgram
213
+
214
+ p = MixedIntegerLinearProgram(maximization=True, solver=solver)
215
+ A = p.new_variable(integer=isinteger, nonnegative=True)
216
+ p.set_objective(p.sum([A[r] for r in range(n + 1)]))
217
+ p.add_constraint(A[0] == 1)
218
+ for i in range(1, d):
219
+ p.add_constraint(A[i] == 0)
220
+ for j in range(1, n + 1):
221
+ rhs = p.sum([krawtchouk(n, q, j, r, check=False) * A[r]
222
+ for r in range(n + 1)])
223
+ if j >= d_star:
224
+ p.add_constraint(0 <= rhs)
225
+ else: # rhs is proportional to j-th weight of the dual code
226
+ p.add_constraint(0 == rhs)
227
+
228
+ if maxc > 0:
229
+ p.add_constraint(p.sum([A[r] for r in range(n + 1)]), max=maxc)
230
+ return A, p
231
+
232
+
233
+ def _delsarte_cwc_LP_building(n, d, w, solver, isinteger):
234
+ r"""
235
+ LP builder for Delsarte's LP for constant weight codes.
236
+
237
+ It is used in :func:`delsarte_bound_constant_weight_code`; not exported.
238
+
239
+ INPUT:
240
+
241
+ - ``n`` -- the code length
242
+
243
+ - ``w`` -- the weight of the code
244
+
245
+ - ``d`` -- the (lower bound on) minimal distance of the code
246
+
247
+ - ``solver`` -- the LP/ILP solver to be used. Defaults to
248
+ ``PPL``. It is arbitrary precision, thus there will be no
249
+ rounding errors. With other solvers (see
250
+ :class:`MixedIntegerLinearProgram` for the list), you are on
251
+ your own!
252
+
253
+ - ``isinteger`` -- if ``True``, uses an integer programming solver
254
+ (ILP), rather that an LP solver. Can be very slow if set to
255
+ ``True``.
256
+
257
+ EXAMPLES::
258
+
259
+ sage: from sage.coding.delsarte_bounds import _delsarte_cwc_LP_building
260
+ sage: _,p=_delsarte_cwc_LP_building(17, 4, 3, "PPL", False)
261
+ sage: p.show()
262
+ Maximization:
263
+ x_0 + x_1 + 1
264
+ Constraints:
265
+ constraint_0: -1 <= 4/21 x_0 - 3/14 x_1
266
+ constraint_1: -1 <= -23/273 x_0 + 3/91 x_1
267
+ constraint_2: -1 <= 1/91 x_0 - 1/364 x_1
268
+ Variables:
269
+ x_0 is a continuous variable (min=0, max=+oo)
270
+ x_1 is a continuous variable (min=0, max=+oo)
271
+ """
272
+ from sage.arith.misc import binomial
273
+ from sage.numerical.mip import MixedIntegerLinearProgram
274
+
275
+ p = MixedIntegerLinearProgram(maximization=True, solver=solver)
276
+ A = p.new_variable(integer=isinteger, nonnegative=True)
277
+ p.set_objective(p.sum([A[2*r] for r in range(d//2, w+1)]) + 1)
278
+
279
+ def _q(k, i):
280
+ mu_i = 1
281
+ v_i = binomial(w, i)*binomial(n-w, i)
282
+ return mu_i*eberlein(n, w, i, k)/v_i
283
+
284
+ for k in range(1, w+1):
285
+ p.add_constraint(p.sum([A[2*i]*_q(k, i) for i in range(d//2, w+1)]),
286
+ min=-1)
287
+
288
+ return A, p
289
+
290
+
291
+ def delsarte_bound_constant_weight_code(n, d, w, return_data=False,
292
+ solver='PPL', isinteger=False):
293
+ r"""
294
+ Find the Delsarte bound on a constant weight code.
295
+
296
+ Find the Delsarte bound on a constant weight code of weight ``w``, length
297
+ ``n``, lower bound on minimal distance ``d``.
298
+
299
+ INPUT:
300
+
301
+ - ``n`` -- the code length
302
+
303
+ - ``d`` -- the (lower bound on) minimal distance of the code
304
+
305
+ - ``w`` -- the weight of the code
306
+
307
+ - ``return_data`` -- if ``True``, return a triple
308
+ ``(W,LP,bound)``, where ``W`` is a weights vector, and ``LP``
309
+ the Delsarte upper bound LP; both of them are Sage LP data.
310
+ ``W`` need not be a weight distribution of a code.
311
+
312
+ - ``solver`` -- the LP/ILP solver to be used. Defaults to
313
+ ``PPL``. It is arbitrary precision, thus there will be no
314
+ rounding errors. With other solvers (see
315
+ :class:`MixedIntegerLinearProgram` for the list), you are on
316
+ your own!
317
+
318
+ - ``isinteger`` -- if ``True``, uses an integer programming solver
319
+ (ILP), rather that an LP solver. Can be very slow if set to
320
+ ``True``.
321
+
322
+ EXAMPLES:
323
+
324
+ The bound on the size of codes of length 17, weight 3, and minimal distance 4::
325
+
326
+ sage: codes.bounds.delsarte_bound_constant_weight_code(17, 4, 3)
327
+ 45
328
+ sage: a, p, val = codes.bounds.delsarte_bound_constant_weight_code(17, 4, 3, return_data=True)
329
+ sage: [j for i,j in p.get_values(a).items()]
330
+ [21, 70/3]
331
+
332
+ The stricter bound (using ILP) on codes of length 17, weight 3, and minimal
333
+ distance 4::
334
+
335
+ sage: codes.bounds.delsarte_bound_constant_weight_code(17, 4, 3, isinteger=True)
336
+ 43
337
+ """
338
+ from sage.numerical.mip import MIPSolverException
339
+
340
+ if d < 4:
341
+ raise ValueError("Violated constraint d>=4 for "
342
+ "Binary Constant Weight Codes")
343
+
344
+ if d >= 2*w or 2*w > n:
345
+ raise ValueError("Violated constraint d<2w<=n for "
346
+ "Binary Constant Weight Codes")
347
+
348
+ # minimum distance is even => if there is an odd lower bound on d we can
349
+ # increase it by 1
350
+ if d % 2:
351
+ d += 1
352
+
353
+ A, p = _delsarte_cwc_LP_building(n, d, w, solver, isinteger)
354
+ try:
355
+ bd = p.solve()
356
+ except MIPSolverException as exc:
357
+ print(f"Solver exception: {exc}")
358
+ return (A, p, False) if return_data else False
359
+
360
+ return (A, p, bd) if return_data else int(bd)
361
+
362
+
363
+ def delsarte_bound_hamming_space(n, d, q, return_data=False,
364
+ solver='PPL', isinteger=False):
365
+ r"""
366
+ Find the Delsarte bound on codes in ``H_q^n`` of minimal distance ``d``.
367
+
368
+ Find the Delsarte bound [De1973]_ on the size of codes in
369
+ the Hamming space ``H_q^n`` of minimal distance ``d``.
370
+
371
+ INPUT:
372
+
373
+ - ``n`` -- the code length
374
+
375
+ - ``d`` -- the (lower bound on) minimal distance of the code
376
+
377
+ - ``q`` -- the size of the alphabet
378
+
379
+ - ``return_data`` -- if ``True``, return a triple
380
+ ``(W,LP,bound)``, where ``W`` is a weights vector, and ``LP``
381
+ the Delsarte upper bound LP; both of them are Sage LP data.
382
+ ``W`` need not be a weight distribution of a code.
383
+
384
+ - ``solver`` -- the LP/ILP solver to be used. Defaults to
385
+ ``PPL``. It is arbitrary precision, thus there will be no
386
+ rounding errors. With other solvers (see
387
+ :class:`MixedIntegerLinearProgram` for the list), you are on
388
+ your own!
389
+
390
+ - ``isinteger`` -- if ``True``, uses an integer programming solver
391
+ (ILP), rather that an LP solver. Can be very slow if set to
392
+ ``True``.
393
+
394
+ EXAMPLES:
395
+
396
+ The bound on the size of the `\GF{2}`-codes of length 11 and minimal distance 6::
397
+
398
+ sage: codes.bounds.delsarte_bound_hamming_space(11, 6, 2)
399
+ 12
400
+ sage: a, p, val = codes.bounds.delsarte_bound_hamming_space(11, 6, 2, return_data=True)
401
+ sage: [j for i,j in p.get_values(a).items()]
402
+ [1, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0]
403
+
404
+ The bound on the size of the `\GF{2}`-codes of length 24 and minimal distance
405
+ 8, i.e. parameters of the extended binary Golay code::
406
+
407
+ sage: a,p,x = codes.bounds.delsarte_bound_hamming_space(24,8,2,return_data=True)
408
+ sage: x
409
+ 4096
410
+ sage: [j for i,j in p.get_values(a).items()]
411
+ [1, 0, 0, 0, 0, 0, 0, 0, 759, 0, 0, 0, 2576, 0, 0, 0, 759, 0, 0, 0, 0, 0, 0, 0, 1]
412
+
413
+ The bound on the size of `\GF{4}`-codes of length 11 and minimal distance 3::
414
+
415
+ sage: codes.bounds.delsarte_bound_hamming_space(11,3,4)
416
+ 327680/3
417
+
418
+ An improvement of a known upper bound (150) from https://www.win.tue.nl/~aeb/codes/binary-1.html ::
419
+
420
+ sage: a,p,x = codes.bounds.delsarte_bound_hamming_space(23,10,2,return_data=True,isinteger=True); x # long time
421
+ 148
422
+ sage: [j for i,j in p.get_values(a).items()] # long time
423
+ [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, 2, 0, 36, 0, 14, 0, 0, 0, 0, 0, 0, 0]
424
+
425
+ Note that a usual LP, without integer variables, won't do the trick ::
426
+
427
+ sage: codes.bounds.delsarte_bound_hamming_space(23,10,2).n(20)
428
+ 151.86
429
+
430
+ Such an input is invalid::
431
+
432
+ sage: codes.bounds.delsarte_bound_hamming_space(11,3,-4)
433
+ Solver exception: PPL : There is no feasible solution
434
+ False
435
+ """
436
+ from sage.numerical.mip import MIPSolverException
437
+ A, p = _delsarte_LP_building(n, d, 0, q, isinteger, solver)
438
+ try:
439
+ bd = p.solve()
440
+ except MIPSolverException as exc:
441
+ print(f"Solver exception: {exc}")
442
+ return (A, p, False) if return_data else False
443
+
444
+ return (A, p, bd) if return_data else bd
445
+
446
+
447
+ def delsarte_bound_additive_hamming_space(n, d, q, d_star=1, q_base=0, return_data=False,
448
+ solver='PPL', isinteger=False):
449
+ r"""
450
+ Find a modified Delsarte bound on additive codes in Hamming space `H_q^n` of minimal distance `d`.
451
+
452
+ Find the Delsarte LP bound on ``F_{q_base}``-dimension of additive
453
+ codes in Hamming space `H_q^n` of minimal distance ``d`` with
454
+ minimal distance of the dual code at least ``d_star``. If
455
+ ``q_base`` is set to nonzero, then ``q`` is a power of
456
+ ``q_base``, and the code is, formally, linear over
457
+ ``F_{q_base}``. Otherwise it is assumed that ``q_base==q``.
458
+
459
+ INPUT:
460
+
461
+ - ``n`` -- the code length
462
+
463
+ - ``d`` -- the (lower bound on) minimal distance of the code
464
+
465
+ - ``q`` -- the size of the alphabet
466
+
467
+ - ``d_star`` -- the (lower bound on) minimal distance of the dual code;
468
+ only makes sense for additive codes
469
+
470
+ - ``q_base`` -- if ``0``, the code is assumed to be linear. Otherwise,
471
+ ``q=q_base^m`` and the code is linear over ``F_{q_base}``
472
+
473
+ - ``return_data`` -- if ``True``, return a triple ``(W,LP,bound)``,
474
+ where ``W`` is a weights vector, and ``LP`` the Delsarte bound
475
+ LP; both of them are Sage LP data. ``W`` need not be a weight
476
+ distribution of a code, or, if ``isinteger==False``, even have
477
+ integer entries.
478
+
479
+ - ``solver`` -- the LP/ILP solver to be used. Defaults to ``'PPL'``. It is
480
+ arbitrary precision, thus there will be no rounding errors. With
481
+ other solvers (see :class:`MixedIntegerLinearProgram` for the
482
+ list), you are on your own!
483
+
484
+ - ``isinteger`` -- if ``True``, uses an integer programming solver (ILP),
485
+ rather that an LP solver (can be very slow if set to ``True``)
486
+
487
+ EXAMPLES:
488
+
489
+ The bound on dimension of linear `\GF{2}`-codes of length 11 and minimal distance 6::
490
+
491
+ sage: codes.bounds.delsarte_bound_additive_hamming_space(11, 6, 2)
492
+ 3
493
+ sage: a,p,val = codes.bounds.delsarte_bound_additive_hamming_space(\
494
+ ....: 11, 6, 2, return_data=True)
495
+ sage: [j for i,j in p.get_values(a).items()]
496
+ [1, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 0]
497
+
498
+ The bound on the dimension of linear `\GF{4}`-codes of length 11 and minimal distance 3::
499
+
500
+ sage: codes.bounds.delsarte_bound_additive_hamming_space(11,3,4)
501
+ 8
502
+
503
+ The bound on the `\GF{2}`-dimension of additive `\GF{4}`-codes of length 11 and minimal
504
+ distance 3::
505
+
506
+ sage: codes.bounds.delsarte_bound_additive_hamming_space(11,3,4,q_base=2)
507
+ 16
508
+
509
+ Such a ``d_star`` is not possible::
510
+
511
+ sage: codes.bounds.delsarte_bound_additive_hamming_space(11,3,4,d_star=9)
512
+ Solver exception: PPL : There is no feasible solution
513
+ False
514
+
515
+ TESTS::
516
+
517
+ sage: a,p,x = codes.bounds.delsarte_bound_additive_hamming_space(\
518
+ ....: 19,15,7,return_data=True,isinteger=True)
519
+ sage: [j for i,j in p.get_values(a).items()]
520
+ [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 307, 0, 0, 1, 34]
521
+ sage: codes.bounds.delsarte_bound_additive_hamming_space(19,15,7,solver='glpk')
522
+ 3
523
+ sage: codes.bounds.delsarte_bound_additive_hamming_space(\
524
+ ....: 19,15,7, isinteger=True, solver='glpk')
525
+ 3
526
+ """
527
+ from sage.numerical.mip import MIPSolverException
528
+ if q_base == 0:
529
+ q_base = q
530
+
531
+ kk = 0
532
+ while q_base**kk < q:
533
+ kk += 1
534
+
535
+ if q_base**kk != q:
536
+ print("Wrong q_base=", q_base, " for q=", q, kk)
537
+ return False
538
+
539
+ # this implementation assumes that our LP solver to be unable to do a hot
540
+ # restart with an adjusted constraint
541
+
542
+ m = kk*n # this is to emulate repeat/until block
543
+ bd = q**n+1
544
+
545
+ while q_base**m < bd:
546
+ # need to solve the LP repeatedly, as this is a new constraint!
547
+ # we might become infeasible. More precisely, after rounding down
548
+ # to the closest value of q_base^m, the LP, with the constraint that
549
+ # the objective function is at most q_base^m,
550
+ A, p = _delsarte_LP_building(n, d, d_star, q, isinteger,
551
+ solver, q_base**m)
552
+ try:
553
+ bd = p.solve()
554
+ except MIPSolverException as exc:
555
+ print("Solver exception:", exc)
556
+ return (A, p, False) if return_data else False
557
+ # rounding the bound down to the nearest power of q_base, for q=q_base^m
558
+ # bd_r = roundres(log(bd, base=q_base))
559
+ m = -1
560
+ while q_base**(m+1) < bd:
561
+ m += 1
562
+ if q_base**(m+1) == bd:
563
+ m += 1
564
+
565
+ return (A, p, m) if return_data else m
566
+
567
+
568
+ def _delsarte_Q_LP_building(q, d, solver, isinteger):
569
+ r"""
570
+ LP builder for Delsarte's LP for codes given Q matrix.
571
+
572
+ LP builder for Delsarte's LP for codes, given Q matrix;
573
+ used in :func:`delsarte_bound_Q_matrix`; not exported.
574
+
575
+ INPUT:
576
+
577
+ - ``q`` -- the Q matrix
578
+
579
+ - ``d`` -- the (lower bound on) minimal distance of the code
580
+
581
+ - ``solver`` -- the LP/ILP solver to be used. Defaults to
582
+ ``PPL``. It is arbitrary precision, thus there will be no
583
+ rounding errors. With other solvers (see
584
+ :class:`MixedIntegerLinearProgram` for the list), you are on
585
+ your own!
586
+
587
+ - ``isinteger`` -- if ``True``, uses an integer programming solver
588
+ (ILP), rather that an LP solver. Can be very slow if set to
589
+ ``True``.
590
+
591
+ EXAMPLES::
592
+
593
+ sage: from sage.coding.delsarte_bounds import _delsarte_Q_LP_building
594
+ sage: q = Matrix([[codes.bounds.krawtchouk(6,2,i,j) for j in range(7)] for i in range(7)])
595
+ sage: _, p = _delsarte_Q_LP_building(q, 2, "PPL", False)
596
+ sage: p.show()
597
+ Maximization:
598
+ x_0 + x_1 + x_2 + x_3 + x_4 + x_5 + x_6
599
+ <BLANKLINE>
600
+ Constraints:
601
+ constraint_0: 1 <= x_0 <= 1
602
+ constraint_1: 0 <= x_1 <= 0
603
+ constraint_2: 0 <= 6 x_0 + 4 x_1 + 2 x_2 - 2 x_4 - 4 x_5 - 6 x_6
604
+ constraint_3: 0 <= 15 x_0 + 5 x_1 - x_2 - 3 x_3 - x_4 + 5 x_5 + 15 x_6
605
+ constraint_4: 0 <= 20 x_0 - 4 x_2 + 4 x_4 - 20 x_6
606
+ constraint_5: 0 <= 15 x_0 - 5 x_1 - x_2 + 3 x_3 - x_4 - 5 x_5 + 15 x_6
607
+ constraint_6: 0 <= 6 x_0 - 4 x_1 + 2 x_2 - 2 x_4 + 4 x_5 - 6 x_6
608
+ constraint_7: 0 <= x_0 - x_1 + x_2 - x_3 + x_4 - x_5 + x_6
609
+ Variables:
610
+ x_0 is a continuous variable (min=0, max=+oo)
611
+ x_1 is a continuous variable (min=0, max=+oo)
612
+ x_2 is a continuous variable (min=0, max=+oo)
613
+ x_3 is a continuous variable (min=0, max=+oo)
614
+ x_4 is a continuous variable (min=0, max=+oo)
615
+ x_5 is a continuous variable (min=0, max=+oo)
616
+ x_6 is a continuous variable (min=0, max=+oo)
617
+ """
618
+ from sage.numerical.mip import MixedIntegerLinearProgram
619
+
620
+ n, _ = q.dimensions() # Q is a square matrix
621
+
622
+ p = MixedIntegerLinearProgram(maximization=True, solver=solver)
623
+ A = p.new_variable(integer=isinteger, nonnegative=True)
624
+ p.set_objective(p.sum([A[i] for i in range(n)]))
625
+
626
+ p.add_constraint(A[0] == 1)
627
+
628
+ try:
629
+ for i in range(1, d):
630
+ p.add_constraint(A[i] == 0)
631
+ except TypeError:
632
+ for i in d:
633
+ p.add_constraint(A[i] == 0)
634
+
635
+ for k in range(1, n):
636
+ p.add_constraint(p.sum([q[k][i] * A[i] for i in range(n)]), min=0)
637
+
638
+ return A, p
639
+
640
+
641
+ def delsarte_bound_Q_matrix(q, d, return_data=False,
642
+ solver='PPL', isinteger=False):
643
+ r"""
644
+ Delsarte bound on a code with Q matrix ``q`` and lower bound on min. dist. ``d``.
645
+
646
+ Find the Delsarte bound on a code with Q matrix ``q`` and lower bound on
647
+ minimal distance ``d``.
648
+
649
+ INPUT:
650
+
651
+ - ``q`` -- the Q matrix
652
+
653
+ - ``d`` -- the (lower bound on) minimal distance of the code
654
+
655
+ - ``return_data`` -- if ``True``, return a triple
656
+ ``(W,LP,bound)``, where ``W`` is a weights vector, and ``LP``
657
+ the Delsarte upper bound LP; both of them are Sage LP data.
658
+ ``W`` need not be a weight distribution of a code.
659
+
660
+ - ``solver`` -- the LP/ILP solver to be used. Defaults to
661
+ ``PPL``. It is arbitrary precision, thus there will be no
662
+ rounding errors. With other solvers (see
663
+ :class:`MixedIntegerLinearProgram` for the list), you are on
664
+ your own!
665
+
666
+ - ``isinteger`` -- if ``True``, uses an integer programming solver
667
+ (ILP), rather that an LP solver. Can be very slow if set to
668
+ ``True``.
669
+
670
+ EXAMPLES:
671
+
672
+ The bound on dimension of linear `\GF{2}`-codes of length 10 and minimal distance 6::
673
+
674
+ sage: q_matrix = Matrix([[codes.bounds.krawtchouk(10,2,i,j) for i in range(11)]
675
+ ....: for j in range(11)])
676
+ sage: codes.bounds.delsarte_bound_Q_matrix(q_matrix, 6)
677
+ 2
678
+
679
+ sage: a,p,val = codes.bounds.delsarte_bound_Q_matrix(q_matrix, 6, return_data=True)
680
+ sage: [j for i,j in p.get_values(a).items()]
681
+ [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]
682
+
683
+ TESTS:
684
+
685
+ Cases for using Hamming scheme Q matrix::
686
+
687
+ sage: q_matrix = Matrix([[codes.bounds.krawtchouk(10,2,i,j) for i in range(11)] for j in range(11)])
688
+ sage: codes.bounds.delsarte_bound_Q_matrix(q_matrix, 6)
689
+ 2
690
+
691
+ sage: a,p,val = codes.bounds.delsarte_bound_Q_matrix(q_matrix, 6, return_data=True)
692
+ sage: [j for i,j in p.get_values(a).items()]
693
+ [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]
694
+ """
695
+ from sage.numerical.mip import MIPSolverException
696
+ from sage.structure.element import Matrix
697
+
698
+ if not isinstance(q, Matrix):
699
+ raise ValueError("Input to delsarte_bound_Q_matrix "
700
+ "should be a sage Matrix()")
701
+
702
+ A, p = _delsarte_Q_LP_building(q, d, solver, isinteger)
703
+ try:
704
+ bd = p.solve()
705
+ except MIPSolverException as exc:
706
+ print(f"Solver exception: {exc}")
707
+ return (A, p, False) if return_data else False
708
+
709
+ return (A, p, bd) if return_data else bd