passagemath-modules 10.6.31rc3__cp314-cp314-musllinux_1_2_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 (807) hide show
  1. passagemath_modules-10.6.31rc3.dist-info/METADATA +281 -0
  2. passagemath_modules-10.6.31rc3.dist-info/RECORD +807 -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-2d945d6c.so.1 +0 -0
  6. passagemath_modules.libs/libgfortran-67378ab2.so.5.0.0 +0 -0
  7. passagemath_modules.libs/libgmp-28992bcb.so.10.5.0 +0 -0
  8. passagemath_modules.libs/libgsl-23768756.so.28.0.0 +0 -0
  9. passagemath_modules.libs/libmpc-7897025b.so.3.3.1 +0 -0
  10. passagemath_modules.libs/libmpfr-e34bb864.so.6.2.1 +0 -0
  11. passagemath_modules.libs/libopenblasp-r0-503f0c35.3.29.so +0 -0
  12. sage/algebras/all__sagemath_modules.py +20 -0
  13. sage/algebras/catalog.py +148 -0
  14. sage/algebras/clifford_algebra.py +3107 -0
  15. sage/algebras/clifford_algebra_element.cpython-314-aarch64-linux-musl.so +0 -0
  16. sage/algebras/clifford_algebra_element.pxd +16 -0
  17. sage/algebras/clifford_algebra_element.pyx +997 -0
  18. sage/algebras/commutative_dga.py +4252 -0
  19. sage/algebras/exterior_algebra_groebner.cpython-314-aarch64-linux-musl.so +0 -0
  20. sage/algebras/exterior_algebra_groebner.pxd +55 -0
  21. sage/algebras/exterior_algebra_groebner.pyx +727 -0
  22. sage/algebras/finite_dimensional_algebras/all.py +2 -0
  23. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra.py +1029 -0
  24. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.cpython-314-aarch64-linux-musl.so +0 -0
  25. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pxd +12 -0
  26. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pyx +706 -0
  27. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_ideal.py +196 -0
  28. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_morphism.py +255 -0
  29. sage/algebras/finite_gca.py +528 -0
  30. sage/algebras/group_algebra.py +232 -0
  31. sage/algebras/lie_algebras/abelian.py +197 -0
  32. sage/algebras/lie_algebras/affine_lie_algebra.py +1213 -0
  33. sage/algebras/lie_algebras/all.py +25 -0
  34. sage/algebras/lie_algebras/all__sagemath_modules.py +1 -0
  35. sage/algebras/lie_algebras/bch.py +177 -0
  36. sage/algebras/lie_algebras/bgg_dual_module.py +1184 -0
  37. sage/algebras/lie_algebras/bgg_resolution.py +232 -0
  38. sage/algebras/lie_algebras/center_uea.py +767 -0
  39. sage/algebras/lie_algebras/classical_lie_algebra.py +2516 -0
  40. sage/algebras/lie_algebras/examples.py +683 -0
  41. sage/algebras/lie_algebras/free_lie_algebra.py +973 -0
  42. sage/algebras/lie_algebras/heisenberg.py +820 -0
  43. sage/algebras/lie_algebras/lie_algebra.py +1562 -0
  44. sage/algebras/lie_algebras/lie_algebra_element.cpython-314-aarch64-linux-musl.so +0 -0
  45. sage/algebras/lie_algebras/lie_algebra_element.pxd +68 -0
  46. sage/algebras/lie_algebras/lie_algebra_element.pyx +2122 -0
  47. sage/algebras/lie_algebras/morphism.py +661 -0
  48. sage/algebras/lie_algebras/nilpotent_lie_algebra.py +457 -0
  49. sage/algebras/lie_algebras/onsager.py +1324 -0
  50. sage/algebras/lie_algebras/poincare_birkhoff_witt.py +816 -0
  51. sage/algebras/lie_algebras/quotient.py +462 -0
  52. sage/algebras/lie_algebras/rank_two_heisenberg_virasoro.py +355 -0
  53. sage/algebras/lie_algebras/representation.py +1040 -0
  54. sage/algebras/lie_algebras/structure_coefficients.py +459 -0
  55. sage/algebras/lie_algebras/subalgebra.py +967 -0
  56. sage/algebras/lie_algebras/symplectic_derivation.py +289 -0
  57. sage/algebras/lie_algebras/verma_module.py +1630 -0
  58. sage/algebras/lie_algebras/virasoro.py +1186 -0
  59. sage/algebras/octonion_algebra.cpython-314-aarch64-linux-musl.so +0 -0
  60. sage/algebras/octonion_algebra.pxd +20 -0
  61. sage/algebras/octonion_algebra.pyx +987 -0
  62. sage/algebras/orlik_solomon.py +907 -0
  63. sage/algebras/orlik_terao.py +779 -0
  64. sage/algebras/steenrod/all.py +7 -0
  65. sage/algebras/steenrod/steenrod_algebra.py +4258 -0
  66. sage/algebras/steenrod/steenrod_algebra_bases.py +1179 -0
  67. sage/algebras/steenrod/steenrod_algebra_misc.py +1167 -0
  68. sage/algebras/steenrod/steenrod_algebra_mult.py +954 -0
  69. sage/algebras/weyl_algebra.py +1126 -0
  70. sage/all__sagemath_modules.py +62 -0
  71. sage/calculus/all__sagemath_modules.py +19 -0
  72. sage/calculus/expr.py +205 -0
  73. sage/calculus/integration.cpython-314-aarch64-linux-musl.so +0 -0
  74. sage/calculus/integration.pyx +698 -0
  75. sage/calculus/interpolation.cpython-314-aarch64-linux-musl.so +0 -0
  76. sage/calculus/interpolation.pxd +13 -0
  77. sage/calculus/interpolation.pyx +387 -0
  78. sage/calculus/interpolators.cpython-314-aarch64-linux-musl.so +0 -0
  79. sage/calculus/interpolators.pyx +326 -0
  80. sage/calculus/ode.cpython-314-aarch64-linux-musl.so +0 -0
  81. sage/calculus/ode.pxd +5 -0
  82. sage/calculus/ode.pyx +610 -0
  83. sage/calculus/riemann.cpython-314-aarch64-linux-musl.so +0 -0
  84. sage/calculus/riemann.pyx +1521 -0
  85. sage/calculus/test_sympy.py +201 -0
  86. sage/calculus/transforms/all.py +7 -0
  87. sage/calculus/transforms/dft.py +844 -0
  88. sage/calculus/transforms/dwt.cpython-314-aarch64-linux-musl.so +0 -0
  89. sage/calculus/transforms/dwt.pxd +7 -0
  90. sage/calculus/transforms/dwt.pyx +160 -0
  91. sage/calculus/transforms/fft.cpython-314-aarch64-linux-musl.so +0 -0
  92. sage/calculus/transforms/fft.pxd +12 -0
  93. sage/calculus/transforms/fft.pyx +487 -0
  94. sage/calculus/wester.py +662 -0
  95. sage/coding/abstract_code.py +1108 -0
  96. sage/coding/ag_code.py +868 -0
  97. sage/coding/ag_code_decoders.cpython-314-aarch64-linux-musl.so +0 -0
  98. sage/coding/ag_code_decoders.pyx +2639 -0
  99. sage/coding/all.py +15 -0
  100. sage/coding/bch_code.py +494 -0
  101. sage/coding/binary_code.cpython-314-aarch64-linux-musl.so +0 -0
  102. sage/coding/binary_code.pxd +124 -0
  103. sage/coding/binary_code.pyx +4139 -0
  104. sage/coding/bounds_catalog.py +43 -0
  105. sage/coding/channel.py +819 -0
  106. sage/coding/channels_catalog.py +29 -0
  107. sage/coding/code_bounds.py +755 -0
  108. sage/coding/code_constructions.py +804 -0
  109. sage/coding/codes_catalog.py +111 -0
  110. sage/coding/cyclic_code.py +1329 -0
  111. sage/coding/databases.py +316 -0
  112. sage/coding/decoder.py +373 -0
  113. sage/coding/decoders_catalog.py +88 -0
  114. sage/coding/delsarte_bounds.py +709 -0
  115. sage/coding/encoder.py +390 -0
  116. sage/coding/encoders_catalog.py +64 -0
  117. sage/coding/extended_code.py +468 -0
  118. sage/coding/gabidulin_code.py +1058 -0
  119. sage/coding/golay_code.py +404 -0
  120. sage/coding/goppa_code.py +441 -0
  121. sage/coding/grs_code.py +2371 -0
  122. sage/coding/guava.py +107 -0
  123. sage/coding/guruswami_sudan/all.py +1 -0
  124. sage/coding/guruswami_sudan/gs_decoder.py +897 -0
  125. sage/coding/guruswami_sudan/interpolation.py +409 -0
  126. sage/coding/guruswami_sudan/utils.py +176 -0
  127. sage/coding/hamming_code.py +176 -0
  128. sage/coding/information_set_decoder.py +1032 -0
  129. sage/coding/kasami_codes.cpython-314-aarch64-linux-musl.so +0 -0
  130. sage/coding/kasami_codes.pyx +351 -0
  131. sage/coding/linear_code.py +3067 -0
  132. sage/coding/linear_code_no_metric.py +1354 -0
  133. sage/coding/linear_rank_metric.py +961 -0
  134. sage/coding/parity_check_code.py +353 -0
  135. sage/coding/punctured_code.py +719 -0
  136. sage/coding/reed_muller_code.py +999 -0
  137. sage/coding/self_dual_codes.py +942 -0
  138. sage/coding/source_coding/all.py +2 -0
  139. sage/coding/source_coding/huffman.py +553 -0
  140. sage/coding/subfield_subcode.py +423 -0
  141. sage/coding/two_weight_db.py +399 -0
  142. sage/combinat/all__sagemath_modules.py +7 -0
  143. sage/combinat/cartesian_product.py +347 -0
  144. sage/combinat/family.py +11 -0
  145. sage/combinat/free_module.py +1977 -0
  146. sage/combinat/root_system/all.py +147 -0
  147. sage/combinat/root_system/ambient_space.py +527 -0
  148. sage/combinat/root_system/associahedron.py +471 -0
  149. sage/combinat/root_system/braid_move_calculator.py +143 -0
  150. sage/combinat/root_system/braid_orbit.cpython-314-aarch64-linux-musl.so +0 -0
  151. sage/combinat/root_system/braid_orbit.pyx +144 -0
  152. sage/combinat/root_system/branching_rules.py +2301 -0
  153. sage/combinat/root_system/cartan_matrix.py +1245 -0
  154. sage/combinat/root_system/cartan_type.py +3069 -0
  155. sage/combinat/root_system/coxeter_group.py +162 -0
  156. sage/combinat/root_system/coxeter_matrix.py +1261 -0
  157. sage/combinat/root_system/coxeter_type.py +681 -0
  158. sage/combinat/root_system/dynkin_diagram.py +900 -0
  159. sage/combinat/root_system/extended_affine_weyl_group.py +2993 -0
  160. sage/combinat/root_system/fundamental_group.py +795 -0
  161. sage/combinat/root_system/hecke_algebra_representation.py +1203 -0
  162. sage/combinat/root_system/integrable_representations.py +1227 -0
  163. sage/combinat/root_system/non_symmetric_macdonald_polynomials.py +1965 -0
  164. sage/combinat/root_system/pieri_factors.py +1147 -0
  165. sage/combinat/root_system/plot.py +1615 -0
  166. sage/combinat/root_system/root_lattice_realization_algebras.py +1214 -0
  167. sage/combinat/root_system/root_lattice_realizations.py +4628 -0
  168. sage/combinat/root_system/root_space.py +487 -0
  169. sage/combinat/root_system/root_system.py +882 -0
  170. sage/combinat/root_system/type_A.py +348 -0
  171. sage/combinat/root_system/type_A_affine.py +227 -0
  172. sage/combinat/root_system/type_A_infinity.py +241 -0
  173. sage/combinat/root_system/type_B.py +347 -0
  174. sage/combinat/root_system/type_BC_affine.py +287 -0
  175. sage/combinat/root_system/type_B_affine.py +216 -0
  176. sage/combinat/root_system/type_C.py +317 -0
  177. sage/combinat/root_system/type_C_affine.py +188 -0
  178. sage/combinat/root_system/type_D.py +357 -0
  179. sage/combinat/root_system/type_D_affine.py +208 -0
  180. sage/combinat/root_system/type_E.py +641 -0
  181. sage/combinat/root_system/type_E_affine.py +231 -0
  182. sage/combinat/root_system/type_F.py +387 -0
  183. sage/combinat/root_system/type_F_affine.py +137 -0
  184. sage/combinat/root_system/type_G.py +293 -0
  185. sage/combinat/root_system/type_G_affine.py +132 -0
  186. sage/combinat/root_system/type_H.py +105 -0
  187. sage/combinat/root_system/type_I.py +110 -0
  188. sage/combinat/root_system/type_Q.py +150 -0
  189. sage/combinat/root_system/type_affine.py +509 -0
  190. sage/combinat/root_system/type_dual.py +704 -0
  191. sage/combinat/root_system/type_folded.py +301 -0
  192. sage/combinat/root_system/type_marked.py +748 -0
  193. sage/combinat/root_system/type_reducible.py +601 -0
  194. sage/combinat/root_system/type_relabel.py +730 -0
  195. sage/combinat/root_system/type_super_A.py +837 -0
  196. sage/combinat/root_system/weight_lattice_realizations.py +1188 -0
  197. sage/combinat/root_system/weight_space.py +639 -0
  198. sage/combinat/root_system/weyl_characters.py +2238 -0
  199. sage/crypto/__init__.py +4 -0
  200. sage/crypto/all.py +28 -0
  201. sage/crypto/block_cipher/all.py +7 -0
  202. sage/crypto/block_cipher/des.py +1065 -0
  203. sage/crypto/block_cipher/miniaes.py +2171 -0
  204. sage/crypto/block_cipher/present.py +909 -0
  205. sage/crypto/block_cipher/sdes.py +1527 -0
  206. sage/crypto/boolean_function.cpython-314-aarch64-linux-musl.so +0 -0
  207. sage/crypto/boolean_function.pxd +10 -0
  208. sage/crypto/boolean_function.pyx +1487 -0
  209. sage/crypto/cipher.py +78 -0
  210. sage/crypto/classical.py +3668 -0
  211. sage/crypto/classical_cipher.py +569 -0
  212. sage/crypto/cryptosystem.py +387 -0
  213. sage/crypto/key_exchange/all.py +7 -0
  214. sage/crypto/key_exchange/catalog.py +24 -0
  215. sage/crypto/key_exchange/diffie_hellman.py +323 -0
  216. sage/crypto/key_exchange/key_exchange_scheme.py +107 -0
  217. sage/crypto/lattice.py +312 -0
  218. sage/crypto/lfsr.py +295 -0
  219. sage/crypto/lwe.py +840 -0
  220. sage/crypto/mq/__init__.py +4 -0
  221. sage/crypto/mq/mpolynomialsystemgenerator.py +204 -0
  222. sage/crypto/mq/rijndael_gf.py +2345 -0
  223. sage/crypto/mq/sbox.py +7 -0
  224. sage/crypto/mq/sr.py +3344 -0
  225. sage/crypto/public_key/all.py +5 -0
  226. sage/crypto/public_key/blum_goldwasser.py +776 -0
  227. sage/crypto/sbox.cpython-314-aarch64-linux-musl.so +0 -0
  228. sage/crypto/sbox.pyx +2090 -0
  229. sage/crypto/sboxes.py +2090 -0
  230. sage/crypto/stream.py +390 -0
  231. sage/crypto/stream_cipher.py +297 -0
  232. sage/crypto/util.py +519 -0
  233. sage/ext/all__sagemath_modules.py +1 -0
  234. sage/ext/interpreters/__init__.py +1 -0
  235. sage/ext/interpreters/all__sagemath_modules.py +2 -0
  236. sage/ext/interpreters/wrapper_cc.cpython-314-aarch64-linux-musl.so +0 -0
  237. sage/ext/interpreters/wrapper_cc.pxd +30 -0
  238. sage/ext/interpreters/wrapper_cc.pyx +252 -0
  239. sage/ext/interpreters/wrapper_cdf.cpython-314-aarch64-linux-musl.so +0 -0
  240. sage/ext/interpreters/wrapper_cdf.pxd +26 -0
  241. sage/ext/interpreters/wrapper_cdf.pyx +245 -0
  242. sage/ext/interpreters/wrapper_rdf.cpython-314-aarch64-linux-musl.so +0 -0
  243. sage/ext/interpreters/wrapper_rdf.pxd +23 -0
  244. sage/ext/interpreters/wrapper_rdf.pyx +221 -0
  245. sage/ext/interpreters/wrapper_rr.cpython-314-aarch64-linux-musl.so +0 -0
  246. sage/ext/interpreters/wrapper_rr.pxd +28 -0
  247. sage/ext/interpreters/wrapper_rr.pyx +335 -0
  248. sage/geometry/all__sagemath_modules.py +5 -0
  249. sage/geometry/toric_lattice.py +1745 -0
  250. sage/geometry/toric_lattice_element.cpython-314-aarch64-linux-musl.so +0 -0
  251. sage/geometry/toric_lattice_element.pyx +432 -0
  252. sage/groups/abelian_gps/abelian_group.py +1925 -0
  253. sage/groups/abelian_gps/abelian_group_element.py +164 -0
  254. sage/groups/abelian_gps/all__sagemath_modules.py +5 -0
  255. sage/groups/abelian_gps/dual_abelian_group.py +421 -0
  256. sage/groups/abelian_gps/dual_abelian_group_element.py +179 -0
  257. sage/groups/abelian_gps/element_base.py +341 -0
  258. sage/groups/abelian_gps/values.py +488 -0
  259. sage/groups/additive_abelian/additive_abelian_group.py +476 -0
  260. sage/groups/additive_abelian/additive_abelian_wrapper.py +857 -0
  261. sage/groups/additive_abelian/all.py +4 -0
  262. sage/groups/additive_abelian/qmodnz.py +231 -0
  263. sage/groups/additive_abelian/qmodnz_element.py +349 -0
  264. sage/groups/affine_gps/affine_group.py +535 -0
  265. sage/groups/affine_gps/all.py +1 -0
  266. sage/groups/affine_gps/catalog.py +17 -0
  267. sage/groups/affine_gps/euclidean_group.py +246 -0
  268. sage/groups/affine_gps/group_element.py +562 -0
  269. sage/groups/all__sagemath_modules.py +12 -0
  270. sage/groups/galois_group.py +479 -0
  271. sage/groups/matrix_gps/all.py +4 -0
  272. sage/groups/matrix_gps/all__sagemath_modules.py +13 -0
  273. sage/groups/matrix_gps/catalog.py +26 -0
  274. sage/groups/matrix_gps/coxeter_group.py +927 -0
  275. sage/groups/matrix_gps/finitely_generated.py +487 -0
  276. sage/groups/matrix_gps/group_element.cpython-314-aarch64-linux-musl.so +0 -0
  277. sage/groups/matrix_gps/group_element.pxd +11 -0
  278. sage/groups/matrix_gps/group_element.pyx +431 -0
  279. sage/groups/matrix_gps/linear.py +440 -0
  280. sage/groups/matrix_gps/matrix_group.py +617 -0
  281. sage/groups/matrix_gps/named_group.py +296 -0
  282. sage/groups/matrix_gps/orthogonal.py +544 -0
  283. sage/groups/matrix_gps/symplectic.py +251 -0
  284. sage/groups/matrix_gps/unitary.py +436 -0
  285. sage/groups/misc_gps/all__sagemath_modules.py +1 -0
  286. sage/groups/misc_gps/argument_groups.py +1905 -0
  287. sage/groups/misc_gps/imaginary_groups.py +479 -0
  288. sage/groups/perm_gps/all__sagemath_modules.py +1 -0
  289. sage/groups/perm_gps/partn_ref/all__sagemath_modules.py +1 -0
  290. sage/groups/perm_gps/partn_ref/refinement_binary.cpython-314-aarch64-linux-musl.so +0 -0
  291. sage/groups/perm_gps/partn_ref/refinement_binary.pxd +41 -0
  292. sage/groups/perm_gps/partn_ref/refinement_binary.pyx +1167 -0
  293. sage/groups/perm_gps/partn_ref/refinement_matrices.cpython-314-aarch64-linux-musl.so +0 -0
  294. sage/groups/perm_gps/partn_ref/refinement_matrices.pxd +31 -0
  295. sage/groups/perm_gps/partn_ref/refinement_matrices.pyx +385 -0
  296. sage/homology/algebraic_topological_model.py +595 -0
  297. sage/homology/all.py +2 -0
  298. sage/homology/all__sagemath_modules.py +8 -0
  299. sage/homology/chain_complex.py +2148 -0
  300. sage/homology/chain_complex_homspace.py +165 -0
  301. sage/homology/chain_complex_morphism.py +629 -0
  302. sage/homology/chain_homotopy.py +604 -0
  303. sage/homology/chains.py +653 -0
  304. sage/homology/free_resolution.py +923 -0
  305. sage/homology/graded_resolution.py +567 -0
  306. sage/homology/hochschild_complex.py +756 -0
  307. sage/homology/homology_group.py +188 -0
  308. sage/homology/homology_morphism.py +422 -0
  309. sage/homology/homology_vector_space_with_basis.py +1454 -0
  310. sage/homology/koszul_complex.py +169 -0
  311. sage/homology/matrix_utils.py +205 -0
  312. sage/libs/all__sagemath_modules.py +1 -0
  313. sage/libs/gsl/__init__.py +1 -0
  314. sage/libs/gsl/airy.pxd +56 -0
  315. sage/libs/gsl/all.pxd +66 -0
  316. sage/libs/gsl/array.cpython-314-aarch64-linux-musl.so +0 -0
  317. sage/libs/gsl/array.pxd +5 -0
  318. sage/libs/gsl/array.pyx +102 -0
  319. sage/libs/gsl/bessel.pxd +208 -0
  320. sage/libs/gsl/blas.pxd +116 -0
  321. sage/libs/gsl/blas_types.pxd +34 -0
  322. sage/libs/gsl/block.pxd +52 -0
  323. sage/libs/gsl/chebyshev.pxd +37 -0
  324. sage/libs/gsl/clausen.pxd +12 -0
  325. sage/libs/gsl/combination.pxd +47 -0
  326. sage/libs/gsl/complex.pxd +151 -0
  327. sage/libs/gsl/coulomb.pxd +30 -0
  328. sage/libs/gsl/coupling.pxd +21 -0
  329. sage/libs/gsl/dawson.pxd +12 -0
  330. sage/libs/gsl/debye.pxd +24 -0
  331. sage/libs/gsl/dilog.pxd +14 -0
  332. sage/libs/gsl/eigen.pxd +46 -0
  333. sage/libs/gsl/elementary.pxd +12 -0
  334. sage/libs/gsl/ellint.pxd +48 -0
  335. sage/libs/gsl/elljac.pxd +8 -0
  336. sage/libs/gsl/erf.pxd +32 -0
  337. sage/libs/gsl/errno.pxd +26 -0
  338. sage/libs/gsl/exp.pxd +44 -0
  339. sage/libs/gsl/expint.pxd +44 -0
  340. sage/libs/gsl/fermi_dirac.pxd +44 -0
  341. sage/libs/gsl/fft.pxd +121 -0
  342. sage/libs/gsl/fit.pxd +50 -0
  343. sage/libs/gsl/gamma.pxd +94 -0
  344. sage/libs/gsl/gegenbauer.pxd +26 -0
  345. sage/libs/gsl/histogram.pxd +176 -0
  346. sage/libs/gsl/hyperg.pxd +52 -0
  347. sage/libs/gsl/integration.pxd +69 -0
  348. sage/libs/gsl/interp.pxd +109 -0
  349. sage/libs/gsl/laguerre.pxd +24 -0
  350. sage/libs/gsl/lambert.pxd +16 -0
  351. sage/libs/gsl/legendre.pxd +90 -0
  352. sage/libs/gsl/linalg.pxd +185 -0
  353. sage/libs/gsl/log.pxd +26 -0
  354. sage/libs/gsl/math.pxd +43 -0
  355. sage/libs/gsl/matrix.pxd +143 -0
  356. sage/libs/gsl/matrix_complex.pxd +130 -0
  357. sage/libs/gsl/min.pxd +67 -0
  358. sage/libs/gsl/monte.pxd +56 -0
  359. sage/libs/gsl/ntuple.pxd +32 -0
  360. sage/libs/gsl/odeiv.pxd +70 -0
  361. sage/libs/gsl/permutation.pxd +78 -0
  362. sage/libs/gsl/poly.pxd +40 -0
  363. sage/libs/gsl/pow_int.pxd +12 -0
  364. sage/libs/gsl/psi.pxd +28 -0
  365. sage/libs/gsl/qrng.pxd +29 -0
  366. sage/libs/gsl/random.pxd +257 -0
  367. sage/libs/gsl/rng.pxd +100 -0
  368. sage/libs/gsl/roots.pxd +72 -0
  369. sage/libs/gsl/sort.pxd +36 -0
  370. sage/libs/gsl/statistics.pxd +59 -0
  371. sage/libs/gsl/sum.pxd +55 -0
  372. sage/libs/gsl/synchrotron.pxd +16 -0
  373. sage/libs/gsl/transport.pxd +24 -0
  374. sage/libs/gsl/trig.pxd +58 -0
  375. sage/libs/gsl/types.pxd +137 -0
  376. sage/libs/gsl/vector.pxd +101 -0
  377. sage/libs/gsl/vector_complex.pxd +83 -0
  378. sage/libs/gsl/wavelet.pxd +49 -0
  379. sage/libs/gsl/zeta.pxd +28 -0
  380. sage/libs/mpc/__init__.pxd +114 -0
  381. sage/libs/mpc/types.pxd +28 -0
  382. sage/libs/mpfr/__init__.pxd +299 -0
  383. sage/libs/mpfr/types.pxd +26 -0
  384. sage/libs/mpmath/__init__.py +1 -0
  385. sage/libs/mpmath/all.py +27 -0
  386. sage/libs/mpmath/all__sagemath_modules.py +1 -0
  387. sage/libs/mpmath/utils.cpython-314-aarch64-linux-musl.so +0 -0
  388. sage/libs/mpmath/utils.pxd +4 -0
  389. sage/libs/mpmath/utils.pyx +319 -0
  390. sage/matrix/action.cpython-314-aarch64-linux-musl.so +0 -0
  391. sage/matrix/action.pxd +26 -0
  392. sage/matrix/action.pyx +596 -0
  393. sage/matrix/all.py +9 -0
  394. sage/matrix/args.cpython-314-aarch64-linux-musl.so +0 -0
  395. sage/matrix/args.pxd +144 -0
  396. sage/matrix/args.pyx +1668 -0
  397. sage/matrix/benchmark.py +1258 -0
  398. sage/matrix/berlekamp_massey.py +95 -0
  399. sage/matrix/compute_J_ideal.py +926 -0
  400. sage/matrix/constructor.cpython-314-aarch64-linux-musl.so +0 -0
  401. sage/matrix/constructor.pyx +750 -0
  402. sage/matrix/docs.py +430 -0
  403. sage/matrix/echelon_matrix.cpython-314-aarch64-linux-musl.so +0 -0
  404. sage/matrix/echelon_matrix.pyx +155 -0
  405. sage/matrix/matrix.pxd +2 -0
  406. sage/matrix/matrix0.cpython-314-aarch64-linux-musl.so +0 -0
  407. sage/matrix/matrix0.pxd +68 -0
  408. sage/matrix/matrix0.pyx +6324 -0
  409. sage/matrix/matrix1.cpython-314-aarch64-linux-musl.so +0 -0
  410. sage/matrix/matrix1.pxd +8 -0
  411. sage/matrix/matrix1.pyx +2851 -0
  412. sage/matrix/matrix2.cpython-314-aarch64-linux-musl.so +0 -0
  413. sage/matrix/matrix2.pxd +25 -0
  414. sage/matrix/matrix2.pyx +20181 -0
  415. sage/matrix/matrix_cdv.cpython-314-aarch64-linux-musl.so +0 -0
  416. sage/matrix/matrix_cdv.pxd +4 -0
  417. sage/matrix/matrix_cdv.pyx +93 -0
  418. sage/matrix/matrix_complex_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  419. sage/matrix/matrix_complex_double_dense.pxd +5 -0
  420. sage/matrix/matrix_complex_double_dense.pyx +98 -0
  421. sage/matrix/matrix_dense.cpython-314-aarch64-linux-musl.so +0 -0
  422. sage/matrix/matrix_dense.pxd +5 -0
  423. sage/matrix/matrix_dense.pyx +343 -0
  424. sage/matrix/matrix_domain_dense.pxd +5 -0
  425. sage/matrix/matrix_domain_sparse.pxd +5 -0
  426. sage/matrix/matrix_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  427. sage/matrix/matrix_double_dense.pxd +7 -0
  428. sage/matrix/matrix_double_dense.pyx +3906 -0
  429. sage/matrix/matrix_double_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  430. sage/matrix/matrix_double_sparse.pxd +6 -0
  431. sage/matrix/matrix_double_sparse.pyx +248 -0
  432. sage/matrix/matrix_generic_dense.cpython-314-aarch64-linux-musl.so +0 -0
  433. sage/matrix/matrix_generic_dense.pxd +7 -0
  434. sage/matrix/matrix_generic_dense.pyx +354 -0
  435. sage/matrix/matrix_generic_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  436. sage/matrix/matrix_generic_sparse.pxd +7 -0
  437. sage/matrix/matrix_generic_sparse.pyx +461 -0
  438. sage/matrix/matrix_laurent_mpolynomial_dense.cpython-314-aarch64-linux-musl.so +0 -0
  439. sage/matrix/matrix_laurent_mpolynomial_dense.pxd +5 -0
  440. sage/matrix/matrix_laurent_mpolynomial_dense.pyx +115 -0
  441. sage/matrix/matrix_misc.py +313 -0
  442. sage/matrix/matrix_numpy_dense.cpython-314-aarch64-linux-musl.so +0 -0
  443. sage/matrix/matrix_numpy_dense.pxd +14 -0
  444. sage/matrix/matrix_numpy_dense.pyx +450 -0
  445. sage/matrix/matrix_numpy_integer_dense.cpython-314-aarch64-linux-musl.so +0 -0
  446. sage/matrix/matrix_numpy_integer_dense.pxd +7 -0
  447. sage/matrix/matrix_numpy_integer_dense.pyx +59 -0
  448. sage/matrix/matrix_polynomial_dense.cpython-314-aarch64-linux-musl.so +0 -0
  449. sage/matrix/matrix_polynomial_dense.pxd +5 -0
  450. sage/matrix/matrix_polynomial_dense.pyx +5341 -0
  451. sage/matrix/matrix_real_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  452. sage/matrix/matrix_real_double_dense.pxd +7 -0
  453. sage/matrix/matrix_real_double_dense.pyx +122 -0
  454. sage/matrix/matrix_space.py +2848 -0
  455. sage/matrix/matrix_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  456. sage/matrix/matrix_sparse.pxd +5 -0
  457. sage/matrix/matrix_sparse.pyx +1222 -0
  458. sage/matrix/matrix_window.cpython-314-aarch64-linux-musl.so +0 -0
  459. sage/matrix/matrix_window.pxd +37 -0
  460. sage/matrix/matrix_window.pyx +242 -0
  461. sage/matrix/misc_mpfr.cpython-314-aarch64-linux-musl.so +0 -0
  462. sage/matrix/misc_mpfr.pyx +80 -0
  463. sage/matrix/operation_table.py +1182 -0
  464. sage/matrix/special.py +3666 -0
  465. sage/matrix/strassen.cpython-314-aarch64-linux-musl.so +0 -0
  466. sage/matrix/strassen.pyx +851 -0
  467. sage/matrix/symplectic_basis.py +541 -0
  468. sage/matrix/template.pxd +6 -0
  469. sage/matrix/tests.py +71 -0
  470. sage/matroids/advanced.py +77 -0
  471. sage/matroids/all.py +13 -0
  472. sage/matroids/basis_exchange_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  473. sage/matroids/basis_exchange_matroid.pxd +96 -0
  474. sage/matroids/basis_exchange_matroid.pyx +2344 -0
  475. sage/matroids/basis_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  476. sage/matroids/basis_matroid.pxd +45 -0
  477. sage/matroids/basis_matroid.pyx +1217 -0
  478. sage/matroids/catalog.py +44 -0
  479. sage/matroids/chow_ring.py +473 -0
  480. sage/matroids/chow_ring_ideal.py +849 -0
  481. sage/matroids/circuit_closures_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  482. sage/matroids/circuit_closures_matroid.pxd +16 -0
  483. sage/matroids/circuit_closures_matroid.pyx +559 -0
  484. sage/matroids/circuits_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  485. sage/matroids/circuits_matroid.pxd +38 -0
  486. sage/matroids/circuits_matroid.pyx +947 -0
  487. sage/matroids/constructor.py +1086 -0
  488. sage/matroids/database_collections.py +365 -0
  489. sage/matroids/database_matroids.py +5338 -0
  490. sage/matroids/dual_matroid.py +583 -0
  491. sage/matroids/extension.cpython-314-aarch64-linux-musl.so +0 -0
  492. sage/matroids/extension.pxd +34 -0
  493. sage/matroids/extension.pyx +519 -0
  494. sage/matroids/flats_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  495. sage/matroids/flats_matroid.pxd +28 -0
  496. sage/matroids/flats_matroid.pyx +715 -0
  497. sage/matroids/gammoid.py +600 -0
  498. sage/matroids/graphic_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  499. sage/matroids/graphic_matroid.pxd +39 -0
  500. sage/matroids/graphic_matroid.pyx +2024 -0
  501. sage/matroids/lean_matrix.cpython-314-aarch64-linux-musl.so +0 -0
  502. sage/matroids/lean_matrix.pxd +126 -0
  503. sage/matroids/lean_matrix.pyx +3667 -0
  504. sage/matroids/linear_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  505. sage/matroids/linear_matroid.pxd +180 -0
  506. sage/matroids/linear_matroid.pyx +6649 -0
  507. sage/matroids/matroid.cpython-314-aarch64-linux-musl.so +0 -0
  508. sage/matroids/matroid.pxd +243 -0
  509. sage/matroids/matroid.pyx +8759 -0
  510. sage/matroids/matroids_catalog.py +190 -0
  511. sage/matroids/matroids_plot_helpers.py +890 -0
  512. sage/matroids/minor_matroid.py +480 -0
  513. sage/matroids/minorfix.h +9 -0
  514. sage/matroids/named_matroids.py +5 -0
  515. sage/matroids/rank_matroid.py +268 -0
  516. sage/matroids/set_system.cpython-314-aarch64-linux-musl.so +0 -0
  517. sage/matroids/set_system.pxd +38 -0
  518. sage/matroids/set_system.pyx +800 -0
  519. sage/matroids/transversal_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  520. sage/matroids/transversal_matroid.pxd +14 -0
  521. sage/matroids/transversal_matroid.pyx +893 -0
  522. sage/matroids/union_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  523. sage/matroids/union_matroid.pxd +20 -0
  524. sage/matroids/union_matroid.pyx +331 -0
  525. sage/matroids/unpickling.cpython-314-aarch64-linux-musl.so +0 -0
  526. sage/matroids/unpickling.pyx +843 -0
  527. sage/matroids/utilities.py +809 -0
  528. sage/misc/all__sagemath_modules.py +20 -0
  529. sage/misc/c3.cpython-314-aarch64-linux-musl.so +0 -0
  530. sage/misc/c3.pyx +238 -0
  531. sage/misc/compat.py +87 -0
  532. sage/misc/element_with_label.py +173 -0
  533. sage/misc/func_persist.py +79 -0
  534. sage/misc/pickle_old.cpython-314-aarch64-linux-musl.so +0 -0
  535. sage/misc/pickle_old.pyx +19 -0
  536. sage/misc/proof.py +7 -0
  537. sage/misc/replace_dot_all.py +472 -0
  538. sage/misc/sagedoc_conf.py +168 -0
  539. sage/misc/sphinxify.py +167 -0
  540. sage/misc/test_class_pickling.py +85 -0
  541. sage/modules/all.py +42 -0
  542. sage/modules/complex_double_vector.py +25 -0
  543. sage/modules/diamond_cutting.py +380 -0
  544. sage/modules/fg_pid/all.py +1 -0
  545. sage/modules/fg_pid/fgp_element.py +456 -0
  546. sage/modules/fg_pid/fgp_module.py +2091 -0
  547. sage/modules/fg_pid/fgp_morphism.py +550 -0
  548. sage/modules/filtered_vector_space.py +1271 -0
  549. sage/modules/finite_submodule_iter.cpython-314-aarch64-linux-musl.so +0 -0
  550. sage/modules/finite_submodule_iter.pxd +27 -0
  551. sage/modules/finite_submodule_iter.pyx +452 -0
  552. sage/modules/fp_graded/all.py +1 -0
  553. sage/modules/fp_graded/element.py +346 -0
  554. sage/modules/fp_graded/free_element.py +298 -0
  555. sage/modules/fp_graded/free_homspace.py +53 -0
  556. sage/modules/fp_graded/free_module.py +1060 -0
  557. sage/modules/fp_graded/free_morphism.py +217 -0
  558. sage/modules/fp_graded/homspace.py +563 -0
  559. sage/modules/fp_graded/module.py +1340 -0
  560. sage/modules/fp_graded/morphism.py +1990 -0
  561. sage/modules/fp_graded/steenrod/all.py +1 -0
  562. sage/modules/fp_graded/steenrod/homspace.py +65 -0
  563. sage/modules/fp_graded/steenrod/module.py +477 -0
  564. sage/modules/fp_graded/steenrod/morphism.py +404 -0
  565. sage/modules/fp_graded/steenrod/profile.py +241 -0
  566. sage/modules/free_module.py +8447 -0
  567. sage/modules/free_module_element.cpython-314-aarch64-linux-musl.so +0 -0
  568. sage/modules/free_module_element.pxd +22 -0
  569. sage/modules/free_module_element.pyx +5445 -0
  570. sage/modules/free_module_homspace.py +369 -0
  571. sage/modules/free_module_integer.py +896 -0
  572. sage/modules/free_module_morphism.py +823 -0
  573. sage/modules/free_module_pseudohomspace.py +352 -0
  574. sage/modules/free_module_pseudomorphism.py +578 -0
  575. sage/modules/free_quadratic_module.py +1706 -0
  576. sage/modules/free_quadratic_module_integer_symmetric.py +1790 -0
  577. sage/modules/matrix_morphism.py +1745 -0
  578. sage/modules/misc.py +103 -0
  579. sage/modules/module_functors.py +192 -0
  580. sage/modules/multi_filtered_vector_space.py +719 -0
  581. sage/modules/ore_module.py +2208 -0
  582. sage/modules/ore_module_element.py +178 -0
  583. sage/modules/ore_module_homspace.py +147 -0
  584. sage/modules/ore_module_morphism.py +968 -0
  585. sage/modules/quotient_module.py +699 -0
  586. sage/modules/real_double_vector.py +22 -0
  587. sage/modules/submodule.py +255 -0
  588. sage/modules/tensor_operations.py +567 -0
  589. sage/modules/torsion_quadratic_module.py +1352 -0
  590. sage/modules/tutorial_free_modules.py +248 -0
  591. sage/modules/vector_complex_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  592. sage/modules/vector_complex_double_dense.pxd +6 -0
  593. sage/modules/vector_complex_double_dense.pyx +117 -0
  594. sage/modules/vector_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  595. sage/modules/vector_double_dense.pxd +6 -0
  596. sage/modules/vector_double_dense.pyx +604 -0
  597. sage/modules/vector_integer_dense.cpython-314-aarch64-linux-musl.so +0 -0
  598. sage/modules/vector_integer_dense.pxd +15 -0
  599. sage/modules/vector_integer_dense.pyx +361 -0
  600. sage/modules/vector_integer_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  601. sage/modules/vector_integer_sparse.pxd +29 -0
  602. sage/modules/vector_integer_sparse.pyx +406 -0
  603. sage/modules/vector_modn_dense.cpython-314-aarch64-linux-musl.so +0 -0
  604. sage/modules/vector_modn_dense.pxd +12 -0
  605. sage/modules/vector_modn_dense.pyx +394 -0
  606. sage/modules/vector_modn_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  607. sage/modules/vector_modn_sparse.pxd +21 -0
  608. sage/modules/vector_modn_sparse.pyx +298 -0
  609. sage/modules/vector_numpy_dense.cpython-314-aarch64-linux-musl.so +0 -0
  610. sage/modules/vector_numpy_dense.pxd +15 -0
  611. sage/modules/vector_numpy_dense.pyx +304 -0
  612. sage/modules/vector_numpy_integer_dense.cpython-314-aarch64-linux-musl.so +0 -0
  613. sage/modules/vector_numpy_integer_dense.pxd +7 -0
  614. sage/modules/vector_numpy_integer_dense.pyx +54 -0
  615. sage/modules/vector_rational_dense.cpython-314-aarch64-linux-musl.so +0 -0
  616. sage/modules/vector_rational_dense.pxd +15 -0
  617. sage/modules/vector_rational_dense.pyx +387 -0
  618. sage/modules/vector_rational_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  619. sage/modules/vector_rational_sparse.pxd +30 -0
  620. sage/modules/vector_rational_sparse.pyx +413 -0
  621. sage/modules/vector_real_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  622. sage/modules/vector_real_double_dense.pxd +6 -0
  623. sage/modules/vector_real_double_dense.pyx +126 -0
  624. sage/modules/vector_space_homspace.py +430 -0
  625. sage/modules/vector_space_morphism.py +989 -0
  626. sage/modules/with_basis/all.py +15 -0
  627. sage/modules/with_basis/cell_module.py +494 -0
  628. sage/modules/with_basis/indexed_element.cpython-314-aarch64-linux-musl.so +0 -0
  629. sage/modules/with_basis/indexed_element.pxd +13 -0
  630. sage/modules/with_basis/indexed_element.pyx +1058 -0
  631. sage/modules/with_basis/invariant.py +1075 -0
  632. sage/modules/with_basis/morphism.py +1636 -0
  633. sage/modules/with_basis/representation.py +2939 -0
  634. sage/modules/with_basis/subquotient.py +685 -0
  635. sage/numerical/all__sagemath_modules.py +6 -0
  636. sage/numerical/gauss_legendre.cpython-314-aarch64-linux-musl.so +0 -0
  637. sage/numerical/gauss_legendre.pyx +381 -0
  638. sage/numerical/optimize.py +910 -0
  639. sage/probability/all.py +10 -0
  640. sage/probability/probability_distribution.cpython-314-aarch64-linux-musl.so +0 -0
  641. sage/probability/probability_distribution.pyx +1242 -0
  642. sage/probability/random_variable.py +411 -0
  643. sage/quadratic_forms/all.py +4 -0
  644. sage/quadratic_forms/all__sagemath_modules.py +15 -0
  645. sage/quadratic_forms/binary_qf.py +2042 -0
  646. sage/quadratic_forms/bqf_class_group.py +748 -0
  647. sage/quadratic_forms/constructions.py +93 -0
  648. sage/quadratic_forms/count_local_2.cpython-314-aarch64-linux-musl.so +0 -0
  649. sage/quadratic_forms/count_local_2.pyx +365 -0
  650. sage/quadratic_forms/extras.py +195 -0
  651. sage/quadratic_forms/quadratic_form.py +1753 -0
  652. sage/quadratic_forms/quadratic_form__count_local_2.py +221 -0
  653. sage/quadratic_forms/quadratic_form__equivalence_testing.py +708 -0
  654. sage/quadratic_forms/quadratic_form__evaluate.cpython-314-aarch64-linux-musl.so +0 -0
  655. sage/quadratic_forms/quadratic_form__evaluate.pyx +139 -0
  656. sage/quadratic_forms/quadratic_form__local_density_congruence.py +977 -0
  657. sage/quadratic_forms/quadratic_form__local_field_invariants.py +1072 -0
  658. sage/quadratic_forms/quadratic_form__neighbors.py +424 -0
  659. sage/quadratic_forms/quadratic_form__reduction_theory.py +488 -0
  660. sage/quadratic_forms/quadratic_form__split_local_covering.py +416 -0
  661. sage/quadratic_forms/quadratic_form__ternary_Tornaria.py +657 -0
  662. sage/quadratic_forms/quadratic_form__theta.py +352 -0
  663. sage/quadratic_forms/quadratic_form__variable_substitutions.py +370 -0
  664. sage/quadratic_forms/random_quadraticform.py +209 -0
  665. sage/quadratic_forms/ternary.cpython-314-aarch64-linux-musl.so +0 -0
  666. sage/quadratic_forms/ternary.pyx +1154 -0
  667. sage/quadratic_forms/ternary_qf.py +2027 -0
  668. sage/rings/all__sagemath_modules.py +28 -0
  669. sage/rings/asymptotic/all__sagemath_modules.py +1 -0
  670. sage/rings/asymptotic/misc.py +1252 -0
  671. sage/rings/cc.py +4 -0
  672. sage/rings/cfinite_sequence.py +1306 -0
  673. sage/rings/complex_conversion.cpython-314-aarch64-linux-musl.so +0 -0
  674. sage/rings/complex_conversion.pxd +8 -0
  675. sage/rings/complex_conversion.pyx +23 -0
  676. sage/rings/complex_double.cpython-314-aarch64-linux-musl.so +0 -0
  677. sage/rings/complex_double.pxd +21 -0
  678. sage/rings/complex_double.pyx +2654 -0
  679. sage/rings/complex_mpc.cpython-314-aarch64-linux-musl.so +0 -0
  680. sage/rings/complex_mpc.pxd +21 -0
  681. sage/rings/complex_mpc.pyx +2576 -0
  682. sage/rings/complex_mpfr.cpython-314-aarch64-linux-musl.so +0 -0
  683. sage/rings/complex_mpfr.pxd +18 -0
  684. sage/rings/complex_mpfr.pyx +3602 -0
  685. sage/rings/derivation.py +2334 -0
  686. sage/rings/finite_rings/all__sagemath_modules.py +1 -0
  687. sage/rings/finite_rings/maps_finite_field.py +191 -0
  688. sage/rings/function_field/all__sagemath_modules.py +8 -0
  689. sage/rings/function_field/derivations.py +102 -0
  690. sage/rings/function_field/derivations_rational.py +132 -0
  691. sage/rings/function_field/differential.py +853 -0
  692. sage/rings/function_field/divisor.py +1107 -0
  693. sage/rings/function_field/drinfeld_modules/action.py +199 -0
  694. sage/rings/function_field/drinfeld_modules/all.py +1 -0
  695. sage/rings/function_field/drinfeld_modules/charzero_drinfeld_module.py +673 -0
  696. sage/rings/function_field/drinfeld_modules/drinfeld_module.py +2087 -0
  697. sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py +1131 -0
  698. sage/rings/function_field/drinfeld_modules/homset.py +420 -0
  699. sage/rings/function_field/drinfeld_modules/morphism.py +820 -0
  700. sage/rings/function_field/hermite_form_polynomial.cpython-314-aarch64-linux-musl.so +0 -0
  701. sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
  702. sage/rings/function_field/khuri_makdisi.cpython-314-aarch64-linux-musl.so +0 -0
  703. sage/rings/function_field/khuri_makdisi.pyx +935 -0
  704. sage/rings/invariants/all.py +4 -0
  705. sage/rings/invariants/invariant_theory.py +4597 -0
  706. sage/rings/invariants/reconstruction.py +395 -0
  707. sage/rings/polynomial/all__sagemath_modules.py +17 -0
  708. sage/rings/polynomial/integer_valued_polynomials.py +1230 -0
  709. sage/rings/polynomial/laurent_polynomial_mpair.cpython-314-aarch64-linux-musl.so +0 -0
  710. sage/rings/polynomial/laurent_polynomial_mpair.pxd +15 -0
  711. sage/rings/polynomial/laurent_polynomial_mpair.pyx +2023 -0
  712. sage/rings/polynomial/ore_function_element.py +952 -0
  713. sage/rings/polynomial/ore_function_field.py +1028 -0
  714. sage/rings/polynomial/ore_polynomial_element.cpython-314-aarch64-linux-musl.so +0 -0
  715. sage/rings/polynomial/ore_polynomial_element.pxd +48 -0
  716. sage/rings/polynomial/ore_polynomial_element.pyx +3145 -0
  717. sage/rings/polynomial/ore_polynomial_ring.py +1334 -0
  718. sage/rings/polynomial/polynomial_real_mpfr_dense.cpython-314-aarch64-linux-musl.so +0 -0
  719. sage/rings/polynomial/polynomial_real_mpfr_dense.pyx +788 -0
  720. sage/rings/polynomial/q_integer_valued_polynomials.py +1264 -0
  721. sage/rings/polynomial/skew_polynomial_element.cpython-314-aarch64-linux-musl.so +0 -0
  722. sage/rings/polynomial/skew_polynomial_element.pxd +9 -0
  723. sage/rings/polynomial/skew_polynomial_element.pyx +684 -0
  724. sage/rings/polynomial/skew_polynomial_finite_field.cpython-314-aarch64-linux-musl.so +0 -0
  725. sage/rings/polynomial/skew_polynomial_finite_field.pxd +19 -0
  726. sage/rings/polynomial/skew_polynomial_finite_field.pyx +1093 -0
  727. sage/rings/polynomial/skew_polynomial_finite_order.cpython-314-aarch64-linux-musl.so +0 -0
  728. sage/rings/polynomial/skew_polynomial_finite_order.pxd +10 -0
  729. sage/rings/polynomial/skew_polynomial_finite_order.pyx +567 -0
  730. sage/rings/polynomial/skew_polynomial_ring.py +908 -0
  731. sage/rings/real_double_element_gsl.cpython-314-aarch64-linux-musl.so +0 -0
  732. sage/rings/real_double_element_gsl.pxd +8 -0
  733. sage/rings/real_double_element_gsl.pyx +794 -0
  734. sage/rings/real_field.py +58 -0
  735. sage/rings/real_mpfr.cpython-314-aarch64-linux-musl.so +0 -0
  736. sage/rings/real_mpfr.pxd +29 -0
  737. sage/rings/real_mpfr.pyx +6122 -0
  738. sage/rings/ring_extension.cpython-314-aarch64-linux-musl.so +0 -0
  739. sage/rings/ring_extension.pxd +42 -0
  740. sage/rings/ring_extension.pyx +2779 -0
  741. sage/rings/ring_extension_conversion.cpython-314-aarch64-linux-musl.so +0 -0
  742. sage/rings/ring_extension_conversion.pxd +16 -0
  743. sage/rings/ring_extension_conversion.pyx +462 -0
  744. sage/rings/ring_extension_element.cpython-314-aarch64-linux-musl.so +0 -0
  745. sage/rings/ring_extension_element.pxd +21 -0
  746. sage/rings/ring_extension_element.pyx +1635 -0
  747. sage/rings/ring_extension_homset.py +64 -0
  748. sage/rings/ring_extension_morphism.cpython-314-aarch64-linux-musl.so +0 -0
  749. sage/rings/ring_extension_morphism.pxd +35 -0
  750. sage/rings/ring_extension_morphism.pyx +920 -0
  751. sage/schemes/all__sagemath_modules.py +1 -0
  752. sage/schemes/projective/all__sagemath_modules.py +1 -0
  753. sage/schemes/projective/coherent_sheaf.py +300 -0
  754. sage/schemes/projective/cohomology.py +510 -0
  755. sage/stats/all.py +15 -0
  756. sage/stats/basic_stats.py +489 -0
  757. sage/stats/distributions/all.py +7 -0
  758. sage/stats/distributions/catalog.py +34 -0
  759. sage/stats/distributions/dgs.h +50 -0
  760. sage/stats/distributions/dgs.pxd +111 -0
  761. sage/stats/distributions/dgs_bern.h +400 -0
  762. sage/stats/distributions/dgs_gauss.h +614 -0
  763. sage/stats/distributions/dgs_misc.h +104 -0
  764. sage/stats/distributions/discrete_gaussian_integer.cpython-314-aarch64-linux-musl.so +0 -0
  765. sage/stats/distributions/discrete_gaussian_integer.pxd +14 -0
  766. sage/stats/distributions/discrete_gaussian_integer.pyx +498 -0
  767. sage/stats/distributions/discrete_gaussian_lattice.py +908 -0
  768. sage/stats/distributions/discrete_gaussian_polynomial.py +141 -0
  769. sage/stats/hmm/all.py +15 -0
  770. sage/stats/hmm/chmm.cpython-314-aarch64-linux-musl.so +0 -0
  771. sage/stats/hmm/chmm.pyx +1595 -0
  772. sage/stats/hmm/distributions.cpython-314-aarch64-linux-musl.so +0 -0
  773. sage/stats/hmm/distributions.pxd +29 -0
  774. sage/stats/hmm/distributions.pyx +531 -0
  775. sage/stats/hmm/hmm.cpython-314-aarch64-linux-musl.so +0 -0
  776. sage/stats/hmm/hmm.pxd +17 -0
  777. sage/stats/hmm/hmm.pyx +1388 -0
  778. sage/stats/hmm/util.cpython-314-aarch64-linux-musl.so +0 -0
  779. sage/stats/hmm/util.pxd +7 -0
  780. sage/stats/hmm/util.pyx +165 -0
  781. sage/stats/intlist.cpython-314-aarch64-linux-musl.so +0 -0
  782. sage/stats/intlist.pxd +14 -0
  783. sage/stats/intlist.pyx +588 -0
  784. sage/stats/r.py +49 -0
  785. sage/stats/time_series.cpython-314-aarch64-linux-musl.so +0 -0
  786. sage/stats/time_series.pxd +6 -0
  787. sage/stats/time_series.pyx +2546 -0
  788. sage/tensor/all.py +2 -0
  789. sage/tensor/modules/all.py +8 -0
  790. sage/tensor/modules/alternating_contr_tensor.py +761 -0
  791. sage/tensor/modules/comp.py +5598 -0
  792. sage/tensor/modules/ext_pow_free_module.py +824 -0
  793. sage/tensor/modules/finite_rank_free_module.py +3589 -0
  794. sage/tensor/modules/format_utilities.py +333 -0
  795. sage/tensor/modules/free_module_alt_form.py +858 -0
  796. sage/tensor/modules/free_module_automorphism.py +1207 -0
  797. sage/tensor/modules/free_module_basis.py +1074 -0
  798. sage/tensor/modules/free_module_element.py +284 -0
  799. sage/tensor/modules/free_module_homset.py +652 -0
  800. sage/tensor/modules/free_module_linear_group.py +564 -0
  801. sage/tensor/modules/free_module_morphism.py +1581 -0
  802. sage/tensor/modules/free_module_tensor.py +3289 -0
  803. sage/tensor/modules/reflexive_module.py +386 -0
  804. sage/tensor/modules/tensor_free_module.py +780 -0
  805. sage/tensor/modules/tensor_free_submodule.py +538 -0
  806. sage/tensor/modules/tensor_free_submodule_basis.py +140 -0
  807. sage/tensor/modules/tensor_with_indices.py +1043 -0
@@ -0,0 +1,251 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ """
3
+ Symplectic Linear Groups
4
+
5
+ EXAMPLES::
6
+
7
+ sage: G = Sp(4, GF(7)); G
8
+ Symplectic Group of degree 4 over Finite Field of size 7
9
+
10
+ sage: # needs sage.libs.gap
11
+ sage: g = prod(G.gens()); g
12
+ [3 0 3 0]
13
+ [1 0 0 0]
14
+ [0 1 0 1]
15
+ [0 2 0 0]
16
+ sage: m = g.matrix()
17
+ sage: m * G.invariant_form() * m.transpose() == G.invariant_form()
18
+ True
19
+ sage: G.order()
20
+ 276595200
21
+
22
+ AUTHORS:
23
+
24
+ - David Joyner (2006-03): initial version, modified from
25
+ special_linear (by W. Stein)
26
+
27
+ - Volker Braun (2013-1) port to new Parent, libGAP, extreme refactoring.
28
+
29
+ - Sebastian Oehms (2018-8) add option for user defined invariant bilinear
30
+ form and bug-fix in
31
+ :meth:`~sage.groups.matrix_gps.symplectic.SymplecticMatrixGroup_generic.invariant_form`
32
+ (see :issue:`26028`)
33
+ """
34
+
35
+ # ****************************************************************************
36
+ # Copyright (C) 2006 David Joyner and William Stein
37
+ # 2013 Volker Braun <vbraun.name@gmail.com>
38
+ # 2018 Sebastian Oehms
39
+ # 2018 Travis Scrimshaw
40
+ #
41
+ # This program is free software: you can redistribute it and/or modify
42
+ # it under the terms of the GNU General Public License as published by
43
+ # the Free Software Foundation, either version 2 of the License, or
44
+ # (at your option) any later version.
45
+ # https://www.gnu.org/licenses/
46
+ # ****************************************************************************
47
+
48
+ from sage.misc.latex import latex
49
+ from sage.misc.cachefunc import cached_method
50
+ from sage.rings.finite_rings.finite_field_base import FiniteField
51
+ from sage.groups.matrix_gps.named_group import (
52
+ normalize_args_vectorspace, normalize_args_invariant_form,
53
+ NamedMatrixGroup_generic)
54
+
55
+
56
+ ###############################################################################
57
+ # Symplectic Group
58
+ ###############################################################################
59
+
60
+ def Sp(n, R, var='a', invariant_form=None):
61
+ r"""
62
+ Return the symplectic group.
63
+
64
+ The special linear group `GL( d, R )` consists of all `d \times d`
65
+ matrices that are invertible over the ring `R` with determinant one.
66
+
67
+ .. NOTE::
68
+
69
+ This group is also available via ``groups.matrix.Sp()``.
70
+
71
+ INPUT:
72
+
73
+ - ``n`` -- positive integer
74
+
75
+ - ``R`` -- ring or an integer; if an integer is specified, the
76
+ corresponding finite field is used
77
+
78
+ - ``var`` -- (default: ``'a'``) variable used to
79
+ represent generator of the finite field, if needed
80
+
81
+ - ``invariant_form`` -- (optional) instances being accepted by
82
+ the matrix-constructor which define a `n \times n` square matrix
83
+ over ``R`` describing the alternating form to be kept invariant
84
+ by the symplectic group
85
+
86
+ EXAMPLES::
87
+
88
+ sage: Sp(4, 5)
89
+ Symplectic Group of degree 4 over Finite Field of size 5
90
+
91
+ sage: Sp(4, IntegerModRing(15))
92
+ Symplectic Group of degree 4 over Ring of integers modulo 15
93
+
94
+ sage: Sp(3, GF(7))
95
+ Traceback (most recent call last):
96
+ ...
97
+ ValueError: the degree must be even
98
+
99
+ Using the ``invariant_form`` option::
100
+
101
+ sage: m = matrix(QQ, 4,4, [[0, 0, 1, 0], [0, 0, 0, 2], [-1, 0, 0, 0], [0, -2, 0, 0]])
102
+ sage: Sp4m = Sp(4, QQ, invariant_form=m)
103
+ sage: Sp4 = Sp(4, QQ)
104
+ sage: Sp4 == Sp4m
105
+ False
106
+ sage: Sp4.invariant_form()
107
+ [ 0 0 0 1]
108
+ [ 0 0 1 0]
109
+ [ 0 -1 0 0]
110
+ [-1 0 0 0]
111
+ sage: Sp4m.invariant_form()
112
+ [ 0 0 1 0]
113
+ [ 0 0 0 2]
114
+ [-1 0 0 0]
115
+ [ 0 -2 0 0]
116
+ sage: pm = Permutation([2,1,4,3]).to_matrix()
117
+ sage: g = Sp4(pm); g in Sp4; g
118
+ True
119
+ [0 1 0 0]
120
+ [1 0 0 0]
121
+ [0 0 0 1]
122
+ [0 0 1 0]
123
+ sage: Sp4m(pm)
124
+ Traceback (most recent call last):
125
+ ...
126
+ TypeError: matrix must be symplectic with respect to the alternating form
127
+ [ 0 0 1 0]
128
+ [ 0 0 0 2]
129
+ [-1 0 0 0]
130
+ [ 0 -2 0 0]
131
+
132
+ sage: Sp(4,3, invariant_form=[[0,0,0,1],[0,0,1,0],[0,2,0,0], [2,0,0,0]])
133
+ Traceback (most recent call last):
134
+ ...
135
+ NotImplementedError: invariant_form for finite groups is fixed by GAP
136
+
137
+ TESTS::
138
+
139
+ sage: TestSuite(Sp4).run()
140
+ sage: TestSuite(Sp4m).run()
141
+ sage: groups.matrix.Sp(2, 3) # needs sage.modules sage.rings.finite_rings
142
+ Symplectic Group of degree 2 over Finite Field of size 3
143
+
144
+ sage: # needs sage.libs.gap
145
+ sage: G = Sp(4,5)
146
+ sage: TestSuite(G).run()
147
+ """
148
+ degree, ring = normalize_args_vectorspace(n, R, var=var)
149
+ if degree % 2:
150
+ raise ValueError('the degree must be even')
151
+
152
+ if invariant_form is not None:
153
+ if isinstance(ring, FiniteField):
154
+ raise NotImplementedError("invariant_form for finite groups is fixed by GAP")
155
+
156
+ invariant_form = normalize_args_invariant_form(ring, degree, invariant_form)
157
+ if not invariant_form.is_alternating():
158
+ raise ValueError("invariant_form must be alternating")
159
+
160
+ name = 'Symplectic Group of degree {0} over {1} with respect to alternating bilinear form\n{2}'.format(
161
+ degree, ring, invariant_form)
162
+ ltx = r'\text{{Sp}}_{{{0}}}({1})\text{{ with respect to alternating bilinear form}}{2}'.format(
163
+ degree, latex(ring), latex(invariant_form))
164
+ else:
165
+ name = 'Symplectic Group of degree {0} over {1}'.format(degree, ring)
166
+ ltx = r'\text{{Sp}}_{{{0}}}({1})'.format(degree, latex(ring))
167
+
168
+ try:
169
+ from .symplectic_gap import SymplecticMatrixGroup_gap
170
+ except ImportError:
171
+ pass
172
+ else:
173
+ try:
174
+ cmd = 'Sp({0}, {1})'.format(degree, ring._gap_init_())
175
+ return SymplecticMatrixGroup_gap(degree, ring, True, name, ltx, cmd)
176
+ except ValueError:
177
+ pass
178
+
179
+ return SymplecticMatrixGroup_generic(degree, ring, True, name, ltx, invariant_form=invariant_form)
180
+
181
+
182
+ class SymplecticMatrixGroup_generic(NamedMatrixGroup_generic):
183
+ r"""
184
+ Symplectic Group over arbitrary rings.
185
+
186
+ EXAMPLES::
187
+
188
+ sage: Sp43 = Sp(4,3); Sp43
189
+ Symplectic Group of degree 4 over Finite Field of size 3
190
+ sage: latex(Sp43)
191
+ \text{Sp}_{4}(\Bold{F}_{3})
192
+
193
+ sage: Sp4m = Sp(4, QQ, invariant_form=(0, 0, 1, 0, 0, 0, 0, 2,
194
+ ....: -1, 0, 0, 0, 0, -2, 0, 0)); Sp4m
195
+ Symplectic Group of degree 4 over Rational Field
196
+ with respect to alternating bilinear form
197
+ [ 0 0 1 0]
198
+ [ 0 0 0 2]
199
+ [-1 0 0 0]
200
+ [ 0 -2 0 0]
201
+ sage: latex(Sp4m)
202
+ \text{Sp}_{4}(\Bold{Q})\text{ with respect to alternating bilinear form}\left(\begin{array}{rrrr}
203
+ 0 & 0 & 1 & 0 \\
204
+ 0 & 0 & 0 & 2 \\
205
+ -1 & 0 & 0 & 0 \\
206
+ 0 & -2 & 0 & 0
207
+ \end{array}\right)
208
+ """
209
+
210
+ @cached_method
211
+ def invariant_form(self):
212
+ """
213
+ Return the quadratic form preserved by the symplectic group.
214
+
215
+ OUTPUT: a matrix
216
+
217
+ EXAMPLES::
218
+
219
+ sage: Sp(4, QQ).invariant_form()
220
+ [ 0 0 0 1]
221
+ [ 0 0 1 0]
222
+ [ 0 -1 0 0]
223
+ [-1 0 0 0]
224
+ """
225
+ if self._invariant_form is not None:
226
+ return self._invariant_form
227
+
228
+ R = self.base_ring()
229
+ d = self.degree()
230
+ from sage.matrix.constructor import zero_matrix
231
+ m = zero_matrix(R, d)
232
+ for i in range(d):
233
+ m[i, d-i-1] = 1 if i < d/2 else -1
234
+ m.set_immutable()
235
+ return m
236
+
237
+ def _check_matrix(self, x, *args):
238
+ """
239
+ Check whether the matrix ``x`` is symplectic.
240
+
241
+ See :meth:`~sage.groups.matrix_gps.matrix_group._check_matrix`
242
+ for details.
243
+
244
+ EXAMPLES::
245
+
246
+ sage: G = Sp(4, GF(5))
247
+ sage: G._check_matrix(G.an_element().matrix())
248
+ """
249
+ F = self.invariant_form()
250
+ if x * F * x.transpose() != F:
251
+ raise TypeError('matrix must be symplectic with respect to the alternating form\n{}'.format(F))
@@ -0,0 +1,436 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ r"""
3
+ Unitary Groups `GU(n,q)` and `SU(n,q)`
4
+
5
+ These are `n \times n` unitary matrices with entries in
6
+ `GF(q^2)`.
7
+
8
+ EXAMPLES::
9
+
10
+ sage: # needs sage.rings.finite_rings
11
+ sage: G = SU(3,5)
12
+ sage: G.order() # needs sage.libs.gap
13
+ 378000
14
+ sage: G
15
+ Special Unitary Group of degree 3 over Finite Field in a of size 5^2
16
+ sage: G.gens() # needs sage.libs.gap
17
+ (
18
+ [ a 0 0] [4*a 4 1]
19
+ [ 0 2*a + 2 0] [ 4 4 0]
20
+ [ 0 0 3*a], [ 1 0 0]
21
+ )
22
+ sage: G.base_ring()
23
+ Finite Field in a of size 5^2
24
+
25
+ AUTHORS:
26
+
27
+ - David Joyner (2006-03): initial version, modified from
28
+ special_linear (by W. Stein)
29
+
30
+ - David Joyner (2006-05): minor additions (examples, _latex_, __str__,
31
+ gens)
32
+
33
+ - William Stein (2006-12): rewrite
34
+
35
+ - Volker Braun (2013-1) port to new Parent, libGAP, extreme refactoring.
36
+
37
+ - Sebastian Oehms (2018-8) add ``_UG``,
38
+ :meth:`~sage.groups.matrix_gps.unitary.UnitaryMatrixGroup_generic.invariant_form`,
39
+ option for user defined invariant bilinear form, and bug-fix in
40
+ ``_check_matrix`` (see :issue:`26028`)
41
+ """
42
+
43
+ # ****************************************************************************
44
+ # Copyright (C) 2006 David Joyner and William Stein
45
+ # 2012 Rob Beezer
46
+ # 2013 Volker Braun <vbraun.name@gmail.com>
47
+ # 2018 Sebastian Oehms
48
+ # 2018 Travis Scrimshaw
49
+ # 2019 Jeroen Demeyer
50
+ # 2023 Matthias Koeppe
51
+ #
52
+ # This program is free software: you can redistribute it and/or modify
53
+ # it under the terms of the GNU General Public License as published by
54
+ # the Free Software Foundation, either version 2 of the License, or
55
+ # (at your option) any later version.
56
+ # https://www.gnu.org/licenses/
57
+ # ****************************************************************************
58
+
59
+ from sage.rings.finite_rings.finite_field_constructor import GF
60
+ from sage.rings.finite_rings.finite_field_base import FiniteField
61
+ from sage.misc.latex import latex
62
+ from sage.misc.cachefunc import cached_method
63
+ from sage.groups.matrix_gps.named_group import (
64
+ normalize_args_vectorspace, normalize_args_invariant_form,
65
+ NamedMatrixGroup_generic)
66
+
67
+
68
+ def finite_field_sqrt(ring):
69
+ """
70
+ Helper function.
71
+
72
+ OUTPUT: integer `q` such that ``ring`` is the finite field with `q^2` elements
73
+
74
+ EXAMPLES::
75
+
76
+ sage: from sage.groups.matrix_gps.unitary import finite_field_sqrt
77
+ sage: finite_field_sqrt(GF(4, 'a')) # needs sage.rings.finite_rings
78
+ 2
79
+ """
80
+ if not isinstance(ring, FiniteField):
81
+ raise ValueError('not a finite field')
82
+ q, rem = ring.cardinality().sqrtrem()
83
+ if rem:
84
+ raise ValueError('cardinality not a square')
85
+ return q
86
+
87
+
88
+ ###############################################################################
89
+ # Unitary Group: common Code for both GU and SU
90
+ ###############################################################################
91
+
92
+ def _UG(n, R, special, var='a', invariant_form=None):
93
+ r"""
94
+ This function is commonly used by the functions :func:`GU` and :func:`SU`
95
+ to avoid duplicated code. For documentation and examples
96
+ see the individual functions.
97
+
98
+ TESTS::
99
+
100
+ sage: GU(3,25).order() # indirect doctest # needs sage.libs.gap sage.rings.finite_rings
101
+ 3961191000000
102
+ """
103
+ prefix = 'General'
104
+ latex_prefix = 'G'
105
+ if special:
106
+ prefix = 'Special'
107
+ latex_prefix = 'S'
108
+
109
+ degree, ring = normalize_args_vectorspace(n, R, var=var)
110
+ if isinstance(ring, FiniteField):
111
+ q = ring.cardinality()
112
+ ring = GF(q**2, name=var)
113
+ if invariant_form is not None:
114
+ raise NotImplementedError("invariant_form for finite groups is fixed by GAP")
115
+
116
+ if invariant_form is not None:
117
+ invariant_form = normalize_args_invariant_form(ring, degree, invariant_form)
118
+ if not invariant_form.is_hermitian():
119
+ raise ValueError("invariant_form must be hermitian")
120
+
121
+ try:
122
+ if invariant_form.is_positive_definite():
123
+ inserted_text = "with respect to positive definite hermitian form"
124
+ else:
125
+ inserted_text = "with respect to non positive definite hermitian form"
126
+ except ValueError:
127
+ inserted_text = "with respect to hermitian form"
128
+
129
+ name = '{0} Unitary Group of degree {1} over {2} {3}\n{4}'.format(prefix,
130
+ degree, ring, inserted_text, invariant_form)
131
+ ltx = r'\text{{{0}U}}_{{{1}}}({2})\text{{ {3} }}{4}'.format(latex_prefix,
132
+ degree, latex(ring), inserted_text, latex(invariant_form))
133
+ else:
134
+ name = '{0} Unitary Group of degree {1} over {2}'.format(prefix, degree, ring)
135
+ ltx = r'\text{{{0}U}}_{{{1}}}({2})'.format(latex_prefix, degree, latex(ring))
136
+
137
+ if isinstance(ring, FiniteField):
138
+ try:
139
+ from .unitary_gap import UnitaryMatrixGroup_gap
140
+ except ImportError:
141
+ pass
142
+ else:
143
+ cmd = '{0}U({1}, {2})'.format(latex_prefix, degree, q)
144
+ return UnitaryMatrixGroup_gap(degree, ring, special, name, ltx, cmd)
145
+
146
+ return UnitaryMatrixGroup_generic(degree, ring, special, name, ltx,
147
+ invariant_form=invariant_form)
148
+
149
+
150
+ ###############################################################################
151
+ # General Unitary Group
152
+ ###############################################################################
153
+
154
+ def GU(n, R, var='a', invariant_form=None):
155
+ r"""
156
+ Return the general unitary group.
157
+
158
+ The general unitary group `GU( d, R )` consists of all `d \times d`
159
+ matrices that preserve a nondegenerate sesquilinear form over the
160
+ ring `R`.
161
+
162
+ .. NOTE::
163
+
164
+ For a finite field, the matrices that preserve a sesquilinear
165
+ form over `\GF{q}` live over `\GF{q^2}`. So ``GU(n,q)`` for
166
+ a prime power `q` constructs the matrix group over the base
167
+ ring ``GF(q^2)``.
168
+
169
+ .. NOTE::
170
+
171
+ This group is also available via ``groups.matrix.GU()``.
172
+
173
+ INPUT:
174
+
175
+ - ``n`` -- positive integer
176
+
177
+ - ``R`` -- ring or an integer; if an integer is specified, the
178
+ corresponding finite field is used
179
+
180
+ - ``var`` -- (default: ``'a'``) variable used to
181
+ represent generator of the finite field, if needed
182
+
183
+ - ``invariant_form`` -- (optional) instances being accepted by
184
+ the matrix-constructor which define a `n \times n` square matrix
185
+ over `R` describing the hermitian form to be kept invariant
186
+ by the unitary group; the form is checked to be
187
+ non-degenerate and hermitian but not to be positive definite
188
+
189
+ OUTPUT: the general unitary group
190
+
191
+ EXAMPLES::
192
+
193
+ sage: G = GU(3, 7); G # needs sage.rings.finite_rings
194
+ General Unitary Group of degree 3 over Finite Field in a of size 7^2
195
+ sage: G.gens() # needs sage.libs.gap sage.rings.finite_rings
196
+ (
197
+ [ a 0 0] [6*a 6 1]
198
+ [ 0 1 0] [ 6 6 0]
199
+ [ 0 0 5*a], [ 1 0 0]
200
+ )
201
+ sage: GU(2, QQ)
202
+ General Unitary Group of degree 2 over Rational Field
203
+
204
+ sage: G = GU(3, 5, var='beta') # needs sage.rings.finite_rings
205
+ sage: G.base_ring() # needs sage.rings.finite_rings
206
+ Finite Field in beta of size 5^2
207
+ sage: G.gens() # needs sage.libs.gap sage.rings.finite_rings
208
+ (
209
+ [ beta 0 0] [4*beta 4 1]
210
+ [ 0 1 0] [ 4 4 0]
211
+ [ 0 0 3*beta], [ 1 0 0]
212
+ )
213
+
214
+ Using the ``invariant_form`` option::
215
+
216
+ sage: # needs sage.libs.gap sage.rings.number_field
217
+ sage: UCF = UniversalCyclotomicField(); e5 = UCF.gen(5)
218
+ sage: m = matrix(UCF, 3, 3, [[1,e5,0], [e5.conjugate(),2,0], [0,0,1]])
219
+ sage: G = GU(3, UCF)
220
+ sage: Gm = GU(3, UCF, invariant_form=m)
221
+ sage: G == Gm
222
+ False
223
+ sage: G.invariant_form()
224
+ [1 0 0]
225
+ [0 1 0]
226
+ [0 0 1]
227
+ sage: Gm.invariant_form()
228
+ [ 1 E(5) 0]
229
+ [E(5)^4 2 0]
230
+ [ 0 0 1]
231
+ sage: pm = Permutation((1,2,3)).to_matrix()
232
+ sage: g = G(pm); g in G; g # needs sage.combinat
233
+ True
234
+ [0 0 1]
235
+ [1 0 0]
236
+ [0 1 0]
237
+ sage: Gm(pm) # needs sage.combinat
238
+ Traceback (most recent call last):
239
+ ...
240
+ TypeError: matrix must be unitary with respect to the hermitian form
241
+ [ 1 E(5) 0]
242
+ [E(5)^4 2 0]
243
+ [ 0 0 1]
244
+
245
+ sage: GU(3, 3, invariant_form=[[1,0,0], [0,2,0], [0,0,1]]) # needs sage.libs.pari
246
+ Traceback (most recent call last):
247
+ ...
248
+ NotImplementedError: invariant_form for finite groups is fixed by GAP
249
+
250
+ sage: GU(2, QQ, invariant_form=[[1,0], [2,0]])
251
+ Traceback (most recent call last):
252
+ ...
253
+ ValueError: invariant_form must be non-degenerate
254
+
255
+ TESTS::
256
+
257
+ sage: TestSuite(G).run() # needs sage.libs.gap sage.rings.number_field
258
+ sage: groups.matrix.GU(2, 3) # needs sage.groups sage.rings.finite_rings
259
+ General Unitary Group of degree 2 over Finite Field in a of size 3^2
260
+ """
261
+ return _UG(n, R, False, var=var, invariant_form=invariant_form)
262
+
263
+
264
+ ###############################################################################
265
+ # Special Unitary Group
266
+ ###############################################################################
267
+
268
+ def SU(n, R, var='a', invariant_form=None):
269
+ r"""
270
+ The special unitary group `SU( d, R )` consists of all `d \times d`
271
+ matrices that preserve a nondegenerate sesquilinear form over the
272
+ ring `R` and have determinant `1`.
273
+
274
+ .. NOTE::
275
+
276
+ For a finite field the matrices that preserve a sesquilinear
277
+ form over `\GF{q}` live over `\GF{q^2}`. So ``SU(n,q)`` for
278
+ a prime power `q` constructs the matrix group over the base
279
+ ring ``GF(q^2)``.
280
+
281
+ .. NOTE::
282
+
283
+ This group is also available via ``groups.matrix.SU()``.
284
+
285
+ INPUT:
286
+
287
+ - ``n`` -- positive integer
288
+
289
+ - ``R`` -- ring or an integer; if an integer is specified, the
290
+ corresponding finite field is used
291
+
292
+ - ``var`` -- (default: ``'a'``) variable used to
293
+ represent generator of the finite field, if needed
294
+
295
+ - ``invariant_form`` -- (optional) instances being accepted by
296
+ the matrix-constructor which define a `n \times n` square matrix
297
+ over R describing the hermitian form to be kept invariant
298
+ by the unitary group; the form is checked to be
299
+ non-degenerate and hermitian but not to be positive definite
300
+
301
+ OUTPUT: the special unitary group
302
+
303
+ EXAMPLES::
304
+
305
+ sage: SU(3,5) # needs sage.rings.finite_rings
306
+ Special Unitary Group of degree 3 over Finite Field in a of size 5^2
307
+ sage: SU(3, GF(5)) # needs sage.rings.finite_rings
308
+ Special Unitary Group of degree 3 over Finite Field in a of size 5^2
309
+ sage: SU(3, QQ)
310
+ Special Unitary Group of degree 3 over Rational Field
311
+
312
+ Using the ``invariant_form`` option::
313
+
314
+ sage: # needs sage.rings.number_field
315
+ sage: CF3 = CyclotomicField(3); e3 = CF3.gen()
316
+ sage: m = matrix(CF3, 3, 3, [[1,e3,0], [e3.conjugate(),2,0], [0,0,1]])
317
+ sage: G = SU(3, CF3)
318
+ sage: Gm = SU(3, CF3, invariant_form=m)
319
+ sage: G == Gm
320
+ False
321
+ sage: G.invariant_form()
322
+ [1 0 0]
323
+ [0 1 0]
324
+ [0 0 1]
325
+ sage: Gm.invariant_form()
326
+ [ 1 zeta3 0]
327
+ [-zeta3 - 1 2 0]
328
+ [ 0 0 1]
329
+ sage: pm = Permutation((1,2,3)).to_matrix()
330
+ sage: G(pm) # needs sage.combinat
331
+ [0 0 1]
332
+ [1 0 0]
333
+ [0 1 0]
334
+ sage: Gm(pm) # needs sage.combinat
335
+ Traceback (most recent call last):
336
+ ...
337
+ TypeError: matrix must be unitary with respect to the hermitian form
338
+ [ 1 zeta3 0]
339
+ [-zeta3 - 1 2 0]
340
+ [ 0 0 1]
341
+
342
+ sage: SU(3, 5, invariant_form=[[1,0,0], [0,2,0], [0,0,3]]) # needs sage.rings.finite_rings
343
+ Traceback (most recent call last):
344
+ ...
345
+ NotImplementedError: invariant_form for finite groups is fixed by GAP
346
+
347
+ TESTS::
348
+
349
+ sage: TestSuite(Gm).run() # needs sage.rings.number_field
350
+ sage: groups.matrix.SU(2, 3) # needs sage.modules sage.rings.finite_rings
351
+ Special Unitary Group of degree 2 over Finite Field in a of size 3^2
352
+ """
353
+ return _UG(n, R, True, var=var, invariant_form=invariant_form)
354
+
355
+
356
+ ########################################################################
357
+ # Unitary Group class
358
+ ########################################################################
359
+
360
+ class UnitaryMatrixGroup_generic(NamedMatrixGroup_generic):
361
+ r"""
362
+ General Unitary Group over arbitrary rings.
363
+
364
+ EXAMPLES::
365
+
366
+ sage: G = GU(3, GF(7)); G # needs sage.rings.finite_rings
367
+ General Unitary Group of degree 3 over Finite Field in a of size 7^2
368
+ sage: latex(G) # needs sage.rings.finite_rings
369
+ \text{GU}_{3}(\Bold{F}_{7^{2}})
370
+
371
+ sage: G = SU(3, GF(5)); G # needs sage.rings.finite_rings
372
+ Special Unitary Group of degree 3 over Finite Field in a of size 5^2
373
+ sage: latex(G) # needs sage.rings.finite_rings
374
+ \text{SU}_{3}(\Bold{F}_{5^{2}})
375
+
376
+ sage: # needs sage.rings.number_field
377
+ sage: CF3 = CyclotomicField(3); e3 = CF3.gen()
378
+ sage: m = matrix(CF3, 3, 3, [[1,e3,0], [e3.conjugate(),2,0], [0,0,1]])
379
+ sage: G = SU(3, CF3, invariant_form=m)
380
+ sage: latex(G)
381
+ \text{SU}_{3}(\Bold{Q}(\zeta_{3}))\text{ with respect to positive definite hermitian form }\left(\begin{array}{rrr}
382
+ 1 & \zeta_{3} & 0 \\
383
+ -\zeta_{3} - 1 & 2 & 0 \\
384
+ 0 & 0 & 1
385
+ \end{array}\right)
386
+ """
387
+
388
+ @cached_method
389
+ def invariant_form(self):
390
+ """
391
+ Return the hermitian form preserved by the unitary
392
+ group.
393
+
394
+ OUTPUT: a square matrix describing the bilinear form
395
+
396
+ EXAMPLES::
397
+
398
+ sage: SU4 = SU(4, QQ)
399
+ sage: SU4.invariant_form()
400
+ [1 0 0 0]
401
+ [0 1 0 0]
402
+ [0 0 1 0]
403
+ [0 0 0 1]
404
+ """
405
+ if self._invariant_form is not None:
406
+ return self._invariant_form
407
+
408
+ from sage.matrix.constructor import identity_matrix
409
+ m = identity_matrix(self.base_ring(), self.degree())
410
+ m.set_immutable()
411
+ return m
412
+
413
+ def _check_matrix(self, x, *args):
414
+ """
415
+ Check whether the matrix ``x`` is unitary.
416
+
417
+ See :meth:`~sage.groups.matrix_gps.matrix_group._check_matrix`
418
+ for details.
419
+
420
+ EXAMPLES::
421
+
422
+ sage: # needs sage.rings.finite_rings
423
+ sage: G = GU(2, GF(5))
424
+ sage: G._check_matrix(G.an_element().matrix())
425
+ sage: G = SU(2, GF(5))
426
+ sage: G._check_matrix(G.an_element().matrix())
427
+ """
428
+ if self._special and x.determinant() != 1:
429
+ raise TypeError('matrix must have determinant one')
430
+
431
+ H = self.invariant_form()
432
+ if x * H * x.conjugate_transpose() != H:
433
+ if H == self.one().matrix():
434
+ raise TypeError('matrix must be unitary')
435
+ else:
436
+ raise TypeError('matrix must be unitary with respect to the hermitian form\n{}'.format(H))
@@ -0,0 +1 @@
1
+ # sage_setup: distribution = sagemath-modules