passagemath-categories 10.6.32__cp314-cp314t-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.
Files changed (719) hide show
  1. passagemath_categories-10.6.32.dist-info/METADATA +156 -0
  2. passagemath_categories-10.6.32.dist-info/RECORD +719 -0
  3. passagemath_categories-10.6.32.dist-info/WHEEL +5 -0
  4. passagemath_categories-10.6.32.dist-info/top_level.txt +2 -0
  5. passagemath_categories.libs/libgcc_s-2d945d6c.so.1 +0 -0
  6. passagemath_categories.libs/libgmp-28992bcb.so.10.5.0 +0 -0
  7. passagemath_categories.libs/libstdc++-85f2cd6d.so.6.0.33 +0 -0
  8. sage/all__sagemath_categories.py +28 -0
  9. sage/arith/all.py +38 -0
  10. sage/arith/constants.pxd +27 -0
  11. sage/arith/functions.cpython-314t-aarch64-linux-musl.so +0 -0
  12. sage/arith/functions.pxd +4 -0
  13. sage/arith/functions.pyx +221 -0
  14. sage/arith/misc.py +6552 -0
  15. sage/arith/multi_modular.cpython-314t-aarch64-linux-musl.so +0 -0
  16. sage/arith/multi_modular.pxd +39 -0
  17. sage/arith/multi_modular.pyx +994 -0
  18. sage/arith/rational_reconstruction.cpython-314t-aarch64-linux-musl.so +0 -0
  19. sage/arith/rational_reconstruction.pxd +4 -0
  20. sage/arith/rational_reconstruction.pyx +115 -0
  21. sage/arith/srange.cpython-314t-aarch64-linux-musl.so +0 -0
  22. sage/arith/srange.pyx +571 -0
  23. sage/calculus/all__sagemath_categories.py +2 -0
  24. sage/calculus/functional.py +481 -0
  25. sage/calculus/functions.py +151 -0
  26. sage/categories/additive_groups.py +73 -0
  27. sage/categories/additive_magmas.py +1044 -0
  28. sage/categories/additive_monoids.py +114 -0
  29. sage/categories/additive_semigroups.py +184 -0
  30. sage/categories/affine_weyl_groups.py +238 -0
  31. sage/categories/algebra_ideals.py +95 -0
  32. sage/categories/algebra_modules.py +96 -0
  33. sage/categories/algebras.py +349 -0
  34. sage/categories/algebras_with_basis.py +377 -0
  35. sage/categories/all.py +160 -0
  36. sage/categories/aperiodic_semigroups.py +29 -0
  37. sage/categories/associative_algebras.py +47 -0
  38. sage/categories/bialgebras.py +101 -0
  39. sage/categories/bialgebras_with_basis.py +414 -0
  40. sage/categories/bimodules.py +206 -0
  41. sage/categories/chain_complexes.py +268 -0
  42. sage/categories/classical_crystals.py +480 -0
  43. sage/categories/coalgebras.py +405 -0
  44. sage/categories/coalgebras_with_basis.py +232 -0
  45. sage/categories/coercion_methods.cpython-314t-aarch64-linux-musl.so +0 -0
  46. sage/categories/coercion_methods.pyx +52 -0
  47. sage/categories/commutative_additive_groups.py +104 -0
  48. sage/categories/commutative_additive_monoids.py +45 -0
  49. sage/categories/commutative_additive_semigroups.py +48 -0
  50. sage/categories/commutative_algebra_ideals.py +87 -0
  51. sage/categories/commutative_algebras.py +94 -0
  52. sage/categories/commutative_ring_ideals.py +58 -0
  53. sage/categories/commutative_rings.py +736 -0
  54. sage/categories/complete_discrete_valuation.py +293 -0
  55. sage/categories/complex_reflection_groups.py +145 -0
  56. sage/categories/complex_reflection_or_generalized_coxeter_groups.py +1249 -0
  57. sage/categories/coxeter_group_algebras.py +186 -0
  58. sage/categories/coxeter_groups.py +3402 -0
  59. sage/categories/crystals.py +2628 -0
  60. sage/categories/cw_complexes.py +216 -0
  61. sage/categories/dedekind_domains.py +137 -0
  62. sage/categories/discrete_valuation.py +325 -0
  63. sage/categories/distributive_magmas_and_additive_magmas.py +100 -0
  64. sage/categories/division_rings.py +114 -0
  65. sage/categories/domains.py +95 -0
  66. sage/categories/drinfeld_modules.py +789 -0
  67. sage/categories/dual.py +42 -0
  68. sage/categories/enumerated_sets.py +1146 -0
  69. sage/categories/euclidean_domains.py +271 -0
  70. sage/categories/examples/algebras_with_basis.py +102 -0
  71. sage/categories/examples/all.py +1 -0
  72. sage/categories/examples/commutative_additive_monoids.py +130 -0
  73. sage/categories/examples/commutative_additive_semigroups.py +199 -0
  74. sage/categories/examples/coxeter_groups.py +8 -0
  75. sage/categories/examples/crystals.py +236 -0
  76. sage/categories/examples/cw_complexes.py +163 -0
  77. sage/categories/examples/facade_sets.py +187 -0
  78. sage/categories/examples/filtered_algebras_with_basis.py +204 -0
  79. sage/categories/examples/filtered_modules_with_basis.py +154 -0
  80. sage/categories/examples/finite_coxeter_groups.py +252 -0
  81. sage/categories/examples/finite_dimensional_algebras_with_basis.py +148 -0
  82. sage/categories/examples/finite_dimensional_lie_algebras_with_basis.py +495 -0
  83. sage/categories/examples/finite_enumerated_sets.py +208 -0
  84. sage/categories/examples/finite_monoids.py +150 -0
  85. sage/categories/examples/finite_semigroups.py +190 -0
  86. sage/categories/examples/finite_weyl_groups.py +191 -0
  87. sage/categories/examples/graded_connected_hopf_algebras_with_basis.py +152 -0
  88. sage/categories/examples/graded_modules_with_basis.py +168 -0
  89. sage/categories/examples/graphs.py +122 -0
  90. sage/categories/examples/hopf_algebras_with_basis.py +145 -0
  91. sage/categories/examples/infinite_enumerated_sets.py +190 -0
  92. sage/categories/examples/lie_algebras.py +352 -0
  93. sage/categories/examples/lie_algebras_with_basis.py +196 -0
  94. sage/categories/examples/magmas.py +162 -0
  95. sage/categories/examples/manifolds.py +94 -0
  96. sage/categories/examples/monoids.py +144 -0
  97. sage/categories/examples/posets.py +178 -0
  98. sage/categories/examples/semigroups.py +580 -0
  99. sage/categories/examples/semigroups_cython.cpython-314t-aarch64-linux-musl.so +0 -0
  100. sage/categories/examples/semigroups_cython.pyx +221 -0
  101. sage/categories/examples/semirings.py +249 -0
  102. sage/categories/examples/sets_cat.py +706 -0
  103. sage/categories/examples/sets_with_grading.py +101 -0
  104. sage/categories/examples/with_realizations.py +542 -0
  105. sage/categories/fields.py +991 -0
  106. sage/categories/filtered_algebras.py +63 -0
  107. sage/categories/filtered_algebras_with_basis.py +548 -0
  108. sage/categories/filtered_hopf_algebras_with_basis.py +138 -0
  109. sage/categories/filtered_modules.py +210 -0
  110. sage/categories/filtered_modules_with_basis.py +1209 -0
  111. sage/categories/finite_complex_reflection_groups.py +1506 -0
  112. sage/categories/finite_coxeter_groups.py +1138 -0
  113. sage/categories/finite_crystals.py +103 -0
  114. sage/categories/finite_dimensional_algebras_with_basis.py +1860 -0
  115. sage/categories/finite_dimensional_bialgebras_with_basis.py +33 -0
  116. sage/categories/finite_dimensional_coalgebras_with_basis.py +33 -0
  117. sage/categories/finite_dimensional_graded_lie_algebras_with_basis.py +231 -0
  118. sage/categories/finite_dimensional_hopf_algebras_with_basis.py +38 -0
  119. sage/categories/finite_dimensional_lie_algebras_with_basis.py +2774 -0
  120. sage/categories/finite_dimensional_modules_with_basis.py +1407 -0
  121. sage/categories/finite_dimensional_nilpotent_lie_algebras_with_basis.py +167 -0
  122. sage/categories/finite_dimensional_semisimple_algebras_with_basis.py +270 -0
  123. sage/categories/finite_enumerated_sets.py +769 -0
  124. sage/categories/finite_fields.py +252 -0
  125. sage/categories/finite_groups.py +256 -0
  126. sage/categories/finite_lattice_posets.py +242 -0
  127. sage/categories/finite_monoids.py +316 -0
  128. sage/categories/finite_permutation_groups.py +339 -0
  129. sage/categories/finite_posets.py +1994 -0
  130. sage/categories/finite_semigroups.py +136 -0
  131. sage/categories/finite_sets.py +93 -0
  132. sage/categories/finite_weyl_groups.py +39 -0
  133. sage/categories/finitely_generated_lambda_bracket_algebras.py +112 -0
  134. sage/categories/finitely_generated_lie_conformal_algebras.py +114 -0
  135. sage/categories/finitely_generated_magmas.py +57 -0
  136. sage/categories/finitely_generated_semigroups.py +214 -0
  137. sage/categories/function_fields.py +76 -0
  138. sage/categories/g_sets.py +77 -0
  139. sage/categories/gcd_domains.py +65 -0
  140. sage/categories/generalized_coxeter_groups.py +94 -0
  141. sage/categories/graded_algebras.py +85 -0
  142. sage/categories/graded_algebras_with_basis.py +258 -0
  143. sage/categories/graded_bialgebras.py +32 -0
  144. sage/categories/graded_bialgebras_with_basis.py +32 -0
  145. sage/categories/graded_coalgebras.py +65 -0
  146. sage/categories/graded_coalgebras_with_basis.py +51 -0
  147. sage/categories/graded_hopf_algebras.py +41 -0
  148. sage/categories/graded_hopf_algebras_with_basis.py +169 -0
  149. sage/categories/graded_lie_algebras.py +91 -0
  150. sage/categories/graded_lie_algebras_with_basis.py +44 -0
  151. sage/categories/graded_lie_conformal_algebras.py +74 -0
  152. sage/categories/graded_modules.py +133 -0
  153. sage/categories/graded_modules_with_basis.py +329 -0
  154. sage/categories/graphs.py +138 -0
  155. sage/categories/group_algebras.py +430 -0
  156. sage/categories/groupoid.py +94 -0
  157. sage/categories/groups.py +667 -0
  158. sage/categories/h_trivial_semigroups.py +64 -0
  159. sage/categories/hecke_modules.py +185 -0
  160. sage/categories/highest_weight_crystals.py +980 -0
  161. sage/categories/hopf_algebras.py +219 -0
  162. sage/categories/hopf_algebras_with_basis.py +309 -0
  163. sage/categories/infinite_enumerated_sets.py +115 -0
  164. sage/categories/integral_domains.py +203 -0
  165. sage/categories/j_trivial_semigroups.py +29 -0
  166. sage/categories/kac_moody_algebras.py +82 -0
  167. sage/categories/kahler_algebras.py +203 -0
  168. sage/categories/l_trivial_semigroups.py +63 -0
  169. sage/categories/lambda_bracket_algebras.py +280 -0
  170. sage/categories/lambda_bracket_algebras_with_basis.py +107 -0
  171. sage/categories/lattice_posets.py +89 -0
  172. sage/categories/left_modules.py +49 -0
  173. sage/categories/lie_algebras.py +1070 -0
  174. sage/categories/lie_algebras_with_basis.py +261 -0
  175. sage/categories/lie_conformal_algebras.py +350 -0
  176. sage/categories/lie_conformal_algebras_with_basis.py +147 -0
  177. sage/categories/lie_groups.py +73 -0
  178. sage/categories/loop_crystals.py +1290 -0
  179. sage/categories/magmas.py +1189 -0
  180. sage/categories/magmas_and_additive_magmas.py +149 -0
  181. sage/categories/magmatic_algebras.py +365 -0
  182. sage/categories/manifolds.py +352 -0
  183. sage/categories/matrix_algebras.py +40 -0
  184. sage/categories/metric_spaces.py +387 -0
  185. sage/categories/modular_abelian_varieties.py +78 -0
  186. sage/categories/modules.py +989 -0
  187. sage/categories/modules_with_basis.py +2794 -0
  188. sage/categories/monoid_algebras.py +38 -0
  189. sage/categories/monoids.py +739 -0
  190. sage/categories/noetherian_rings.py +87 -0
  191. sage/categories/number_fields.py +242 -0
  192. sage/categories/ore_modules.py +189 -0
  193. sage/categories/partially_ordered_monoids.py +49 -0
  194. sage/categories/permutation_groups.py +63 -0
  195. sage/categories/pointed_sets.py +42 -0
  196. sage/categories/polyhedra.py +74 -0
  197. sage/categories/poor_man_map.py +270 -0
  198. sage/categories/posets.py +722 -0
  199. sage/categories/principal_ideal_domains.py +270 -0
  200. sage/categories/quantum_group_representations.py +543 -0
  201. sage/categories/quotient_fields.py +728 -0
  202. sage/categories/r_trivial_semigroups.py +45 -0
  203. sage/categories/regular_crystals.py +898 -0
  204. sage/categories/regular_supercrystals.py +170 -0
  205. sage/categories/right_modules.py +49 -0
  206. sage/categories/ring_ideals.py +74 -0
  207. sage/categories/rings.py +1904 -0
  208. sage/categories/rngs.py +175 -0
  209. sage/categories/schemes.py +393 -0
  210. sage/categories/semigroups.py +1060 -0
  211. sage/categories/semirings.py +71 -0
  212. sage/categories/semisimple_algebras.py +114 -0
  213. sage/categories/sets_with_grading.py +235 -0
  214. sage/categories/shephard_groups.py +43 -0
  215. sage/categories/signed_tensor.py +120 -0
  216. sage/categories/simplicial_complexes.py +134 -0
  217. sage/categories/simplicial_sets.py +1206 -0
  218. sage/categories/super_algebras.py +149 -0
  219. sage/categories/super_algebras_with_basis.py +144 -0
  220. sage/categories/super_hopf_algebras_with_basis.py +126 -0
  221. sage/categories/super_lie_conformal_algebras.py +193 -0
  222. sage/categories/super_modules.py +229 -0
  223. sage/categories/super_modules_with_basis.py +193 -0
  224. sage/categories/supercommutative_algebras.py +99 -0
  225. sage/categories/supercrystals.py +406 -0
  226. sage/categories/tensor.py +110 -0
  227. sage/categories/topological_spaces.py +170 -0
  228. sage/categories/triangular_kac_moody_algebras.py +439 -0
  229. sage/categories/tutorial.py +58 -0
  230. sage/categories/unique_factorization_domains.py +318 -0
  231. sage/categories/unital_algebras.py +426 -0
  232. sage/categories/vector_bundles.py +159 -0
  233. sage/categories/vector_spaces.py +357 -0
  234. sage/categories/weyl_groups.py +853 -0
  235. sage/combinat/all__sagemath_categories.py +34 -0
  236. sage/combinat/backtrack.py +180 -0
  237. sage/combinat/combinat.py +2269 -0
  238. sage/combinat/combinat_cython.cpython-314t-aarch64-linux-musl.so +0 -0
  239. sage/combinat/combinat_cython.pxd +6 -0
  240. sage/combinat/combinat_cython.pyx +390 -0
  241. sage/combinat/combination.py +796 -0
  242. sage/combinat/combinatorial_map.py +416 -0
  243. sage/combinat/composition.py +2192 -0
  244. sage/combinat/dlx.py +510 -0
  245. sage/combinat/integer_lists/__init__.py +7 -0
  246. sage/combinat/integer_lists/base.cpython-314t-aarch64-linux-musl.so +0 -0
  247. sage/combinat/integer_lists/base.pxd +16 -0
  248. sage/combinat/integer_lists/base.pyx +713 -0
  249. sage/combinat/integer_lists/invlex.cpython-314t-aarch64-linux-musl.so +0 -0
  250. sage/combinat/integer_lists/invlex.pxd +4 -0
  251. sage/combinat/integer_lists/invlex.pyx +1650 -0
  252. sage/combinat/integer_lists/lists.py +328 -0
  253. sage/combinat/integer_lists/nn.py +48 -0
  254. sage/combinat/integer_vector.py +1818 -0
  255. sage/combinat/integer_vector_weighted.py +413 -0
  256. sage/combinat/matrices/all__sagemath_categories.py +5 -0
  257. sage/combinat/matrices/dancing_links.cpython-314t-aarch64-linux-musl.so +0 -0
  258. sage/combinat/matrices/dancing_links.pyx +1159 -0
  259. sage/combinat/matrices/dancing_links_c.h +380 -0
  260. sage/combinat/matrices/dlxcpp.py +136 -0
  261. sage/combinat/partition.py +10070 -0
  262. sage/combinat/partitions.cpython-314t-aarch64-linux-musl.so +0 -0
  263. sage/combinat/partitions.pyx +743 -0
  264. sage/combinat/permutation.py +10168 -0
  265. sage/combinat/permutation_cython.cpython-314t-aarch64-linux-musl.so +0 -0
  266. sage/combinat/permutation_cython.pxd +11 -0
  267. sage/combinat/permutation_cython.pyx +407 -0
  268. sage/combinat/q_analogues.py +1090 -0
  269. sage/combinat/ranker.py +268 -0
  270. sage/combinat/subset.py +1561 -0
  271. sage/combinat/subsets_hereditary.py +202 -0
  272. sage/combinat/subsets_pairwise.py +184 -0
  273. sage/combinat/tools.py +63 -0
  274. sage/combinat/tuple.py +348 -0
  275. sage/data_structures/all.py +2 -0
  276. sage/data_structures/all__sagemath_categories.py +2 -0
  277. sage/data_structures/binary_matrix.pxd +138 -0
  278. sage/data_structures/binary_search.cpython-314t-aarch64-linux-musl.so +0 -0
  279. sage/data_structures/binary_search.pxd +3 -0
  280. sage/data_structures/binary_search.pyx +66 -0
  281. sage/data_structures/bitset.cpython-314t-aarch64-linux-musl.so +0 -0
  282. sage/data_structures/bitset.pxd +40 -0
  283. sage/data_structures/bitset.pyx +2385 -0
  284. sage/data_structures/bitset_base.cpython-314t-aarch64-linux-musl.so +0 -0
  285. sage/data_structures/bitset_base.pxd +926 -0
  286. sage/data_structures/bitset_base.pyx +117 -0
  287. sage/data_structures/bitset_intrinsics.h +487 -0
  288. sage/data_structures/blas_dict.cpython-314t-aarch64-linux-musl.so +0 -0
  289. sage/data_structures/blas_dict.pxd +12 -0
  290. sage/data_structures/blas_dict.pyx +469 -0
  291. sage/data_structures/list_of_pairs.cpython-314t-aarch64-linux-musl.so +0 -0
  292. sage/data_structures/list_of_pairs.pxd +16 -0
  293. sage/data_structures/list_of_pairs.pyx +122 -0
  294. sage/data_structures/mutable_poset.py +3312 -0
  295. sage/data_structures/pairing_heap.cpython-314t-aarch64-linux-musl.so +0 -0
  296. sage/data_structures/pairing_heap.h +346 -0
  297. sage/data_structures/pairing_heap.pxd +88 -0
  298. sage/data_structures/pairing_heap.pyx +1464 -0
  299. sage/data_structures/sparse_bitset.pxd +62 -0
  300. sage/data_structures/stream.py +5070 -0
  301. sage/databases/all__sagemath_categories.py +7 -0
  302. sage/databases/sql_db.py +2236 -0
  303. sage/ext/all__sagemath_categories.py +3 -0
  304. sage/ext/fast_callable.cpython-314t-aarch64-linux-musl.so +0 -0
  305. sage/ext/fast_callable.pxd +4 -0
  306. sage/ext/fast_callable.pyx +2746 -0
  307. sage/ext/fast_eval.cpython-314t-aarch64-linux-musl.so +0 -0
  308. sage/ext/fast_eval.pxd +1 -0
  309. sage/ext/fast_eval.pyx +102 -0
  310. sage/ext/interpreters/__init__.py +1 -0
  311. sage/ext/interpreters/all__sagemath_categories.py +2 -0
  312. sage/ext/interpreters/wrapper_el.cpython-314t-aarch64-linux-musl.so +0 -0
  313. sage/ext/interpreters/wrapper_el.pxd +18 -0
  314. sage/ext/interpreters/wrapper_el.pyx +148 -0
  315. sage/ext/interpreters/wrapper_py.cpython-314t-aarch64-linux-musl.so +0 -0
  316. sage/ext/interpreters/wrapper_py.pxd +17 -0
  317. sage/ext/interpreters/wrapper_py.pyx +133 -0
  318. sage/functions/airy.py +937 -0
  319. sage/functions/all.py +97 -0
  320. sage/functions/bessel.py +2102 -0
  321. sage/functions/error.py +784 -0
  322. sage/functions/exp_integral.py +1529 -0
  323. sage/functions/gamma.py +1087 -0
  324. sage/functions/generalized.py +672 -0
  325. sage/functions/hyperbolic.py +747 -0
  326. sage/functions/hypergeometric.py +1156 -0
  327. sage/functions/jacobi.py +1705 -0
  328. sage/functions/log.py +1402 -0
  329. sage/functions/min_max.py +338 -0
  330. sage/functions/orthogonal_polys.py +3106 -0
  331. sage/functions/other.py +2303 -0
  332. sage/functions/piecewise.py +1505 -0
  333. sage/functions/prime_pi.cpython-314t-aarch64-linux-musl.so +0 -0
  334. sage/functions/prime_pi.pyx +262 -0
  335. sage/functions/special.py +1212 -0
  336. sage/functions/spike_function.py +278 -0
  337. sage/functions/transcendental.py +690 -0
  338. sage/functions/trig.py +1062 -0
  339. sage/functions/wigner.py +726 -0
  340. sage/geometry/abc.cpython-314t-aarch64-linux-musl.so +0 -0
  341. sage/geometry/abc.pyx +82 -0
  342. sage/geometry/all__sagemath_categories.py +1 -0
  343. sage/groups/all__sagemath_categories.py +11 -0
  344. sage/groups/generic.py +1733 -0
  345. sage/groups/groups_catalog.py +113 -0
  346. sage/groups/perm_gps/all__sagemath_categories.py +1 -0
  347. sage/groups/perm_gps/partn_ref/all.py +1 -0
  348. sage/groups/perm_gps/partn_ref/all__sagemath_categories.py +1 -0
  349. sage/groups/perm_gps/partn_ref/automorphism_group_canonical_label.cpython-314t-aarch64-linux-musl.so +0 -0
  350. sage/groups/perm_gps/partn_ref/automorphism_group_canonical_label.pxd +52 -0
  351. sage/groups/perm_gps/partn_ref/automorphism_group_canonical_label.pyx +906 -0
  352. sage/groups/perm_gps/partn_ref/canonical_augmentation.cpython-314t-aarch64-linux-musl.so +0 -0
  353. sage/groups/perm_gps/partn_ref/canonical_augmentation.pxd +85 -0
  354. sage/groups/perm_gps/partn_ref/canonical_augmentation.pyx +534 -0
  355. sage/groups/perm_gps/partn_ref/data_structures.cpython-314t-aarch64-linux-musl.so +0 -0
  356. sage/groups/perm_gps/partn_ref/data_structures.pxd +576 -0
  357. sage/groups/perm_gps/partn_ref/data_structures.pyx +1792 -0
  358. sage/groups/perm_gps/partn_ref/double_coset.cpython-314t-aarch64-linux-musl.so +0 -0
  359. sage/groups/perm_gps/partn_ref/double_coset.pxd +45 -0
  360. sage/groups/perm_gps/partn_ref/double_coset.pyx +739 -0
  361. sage/groups/perm_gps/partn_ref/refinement_lists.cpython-314t-aarch64-linux-musl.so +0 -0
  362. sage/groups/perm_gps/partn_ref/refinement_lists.pxd +18 -0
  363. sage/groups/perm_gps/partn_ref/refinement_lists.pyx +82 -0
  364. sage/groups/perm_gps/partn_ref/refinement_python.cpython-314t-aarch64-linux-musl.so +0 -0
  365. sage/groups/perm_gps/partn_ref/refinement_python.pxd +16 -0
  366. sage/groups/perm_gps/partn_ref/refinement_python.pyx +564 -0
  367. sage/groups/perm_gps/partn_ref/refinement_sets.cpython-314t-aarch64-linux-musl.so +0 -0
  368. sage/groups/perm_gps/partn_ref/refinement_sets.pxd +60 -0
  369. sage/groups/perm_gps/partn_ref/refinement_sets.pyx +858 -0
  370. sage/interfaces/abc.py +140 -0
  371. sage/interfaces/all.py +58 -0
  372. sage/interfaces/all__sagemath_categories.py +1 -0
  373. sage/interfaces/expect.py +1643 -0
  374. sage/interfaces/interface.py +1682 -0
  375. sage/interfaces/process.cpython-314t-aarch64-linux-musl.so +0 -0
  376. sage/interfaces/process.pxd +5 -0
  377. sage/interfaces/process.pyx +288 -0
  378. sage/interfaces/quit.py +167 -0
  379. sage/interfaces/sage0.py +604 -0
  380. sage/interfaces/sagespawn.cpython-314t-aarch64-linux-musl.so +0 -0
  381. sage/interfaces/sagespawn.pyx +308 -0
  382. sage/interfaces/tab_completion.py +101 -0
  383. sage/misc/all__sagemath_categories.py +78 -0
  384. sage/misc/allocator.cpython-314t-aarch64-linux-musl.so +0 -0
  385. sage/misc/allocator.pxd +6 -0
  386. sage/misc/allocator.pyx +47 -0
  387. sage/misc/binary_tree.cpython-314t-aarch64-linux-musl.so +0 -0
  388. sage/misc/binary_tree.pxd +29 -0
  389. sage/misc/binary_tree.pyx +537 -0
  390. sage/misc/callable_dict.cpython-314t-aarch64-linux-musl.so +0 -0
  391. sage/misc/callable_dict.pyx +89 -0
  392. sage/misc/citation.cpython-314t-aarch64-linux-musl.so +0 -0
  393. sage/misc/citation.pyx +159 -0
  394. sage/misc/converting_dict.py +293 -0
  395. sage/misc/defaults.py +129 -0
  396. sage/misc/derivative.cpython-314t-aarch64-linux-musl.so +0 -0
  397. sage/misc/derivative.pyx +223 -0
  398. sage/misc/functional.py +2005 -0
  399. sage/misc/html.py +589 -0
  400. sage/misc/latex.py +2673 -0
  401. sage/misc/latex_macros.py +236 -0
  402. sage/misc/latex_standalone.py +1833 -0
  403. sage/misc/map_threaded.py +38 -0
  404. sage/misc/mathml.py +76 -0
  405. sage/misc/method_decorator.py +88 -0
  406. sage/misc/mrange.py +755 -0
  407. sage/misc/multireplace.py +41 -0
  408. sage/misc/object_multiplexer.py +92 -0
  409. sage/misc/parser.cpython-314t-aarch64-linux-musl.so +0 -0
  410. sage/misc/parser.pyx +1107 -0
  411. sage/misc/random_testing.py +264 -0
  412. sage/misc/rest_index_of_methods.py +377 -0
  413. sage/misc/search.cpython-314t-aarch64-linux-musl.so +0 -0
  414. sage/misc/search.pxd +2 -0
  415. sage/misc/search.pyx +68 -0
  416. sage/misc/stopgap.cpython-314t-aarch64-linux-musl.so +0 -0
  417. sage/misc/stopgap.pyx +95 -0
  418. sage/misc/table.py +853 -0
  419. sage/monoids/all__sagemath_categories.py +1 -0
  420. sage/monoids/indexed_free_monoid.py +1071 -0
  421. sage/monoids/monoid.py +82 -0
  422. sage/numerical/all__sagemath_categories.py +1 -0
  423. sage/numerical/backends/all__sagemath_categories.py +1 -0
  424. sage/numerical/backends/generic_backend.cpython-314t-aarch64-linux-musl.so +0 -0
  425. sage/numerical/backends/generic_backend.pxd +61 -0
  426. sage/numerical/backends/generic_backend.pyx +1893 -0
  427. sage/numerical/backends/generic_sdp_backend.cpython-314t-aarch64-linux-musl.so +0 -0
  428. sage/numerical/backends/generic_sdp_backend.pxd +38 -0
  429. sage/numerical/backends/generic_sdp_backend.pyx +755 -0
  430. sage/parallel/all.py +6 -0
  431. sage/parallel/decorate.py +575 -0
  432. sage/parallel/map_reduce.py +1997 -0
  433. sage/parallel/multiprocessing_sage.py +76 -0
  434. sage/parallel/ncpus.py +35 -0
  435. sage/parallel/parallelism.py +364 -0
  436. sage/parallel/reference.py +47 -0
  437. sage/parallel/use_fork.py +333 -0
  438. sage/rings/abc.cpython-314t-aarch64-linux-musl.so +0 -0
  439. sage/rings/abc.pxd +31 -0
  440. sage/rings/abc.pyx +526 -0
  441. sage/rings/algebraic_closure_finite_field.py +1154 -0
  442. sage/rings/all__sagemath_categories.py +91 -0
  443. sage/rings/big_oh.py +227 -0
  444. sage/rings/continued_fraction.py +2754 -0
  445. sage/rings/continued_fraction_gosper.py +220 -0
  446. sage/rings/factorint.cpython-314t-aarch64-linux-musl.so +0 -0
  447. sage/rings/factorint.pyx +295 -0
  448. sage/rings/fast_arith.cpython-314t-aarch64-linux-musl.so +0 -0
  449. sage/rings/fast_arith.pxd +21 -0
  450. sage/rings/fast_arith.pyx +535 -0
  451. sage/rings/finite_rings/all__sagemath_categories.py +9 -0
  452. sage/rings/finite_rings/conway_polynomials.py +542 -0
  453. sage/rings/finite_rings/element_base.cpython-314t-aarch64-linux-musl.so +0 -0
  454. sage/rings/finite_rings/element_base.pxd +12 -0
  455. sage/rings/finite_rings/element_base.pyx +1176 -0
  456. sage/rings/finite_rings/finite_field_base.cpython-314t-aarch64-linux-musl.so +0 -0
  457. sage/rings/finite_rings/finite_field_base.pxd +7 -0
  458. sage/rings/finite_rings/finite_field_base.pyx +2171 -0
  459. sage/rings/finite_rings/finite_field_constructor.py +827 -0
  460. sage/rings/finite_rings/finite_field_prime_modn.py +372 -0
  461. sage/rings/finite_rings/galois_group.py +154 -0
  462. sage/rings/finite_rings/hom_finite_field.cpython-314t-aarch64-linux-musl.so +0 -0
  463. sage/rings/finite_rings/hom_finite_field.pxd +23 -0
  464. sage/rings/finite_rings/hom_finite_field.pyx +856 -0
  465. sage/rings/finite_rings/hom_prime_finite_field.cpython-314t-aarch64-linux-musl.so +0 -0
  466. sage/rings/finite_rings/hom_prime_finite_field.pxd +15 -0
  467. sage/rings/finite_rings/hom_prime_finite_field.pyx +164 -0
  468. sage/rings/finite_rings/homset.py +357 -0
  469. sage/rings/finite_rings/integer_mod.cpython-314t-aarch64-linux-musl.so +0 -0
  470. sage/rings/finite_rings/integer_mod.pxd +56 -0
  471. sage/rings/finite_rings/integer_mod.pyx +4586 -0
  472. sage/rings/finite_rings/integer_mod_limits.h +11 -0
  473. sage/rings/finite_rings/integer_mod_ring.py +2044 -0
  474. sage/rings/finite_rings/residue_field.cpython-314t-aarch64-linux-musl.so +0 -0
  475. sage/rings/finite_rings/residue_field.pxd +30 -0
  476. sage/rings/finite_rings/residue_field.pyx +1811 -0
  477. sage/rings/finite_rings/stdint.pxd +19 -0
  478. sage/rings/fraction_field.py +1452 -0
  479. sage/rings/fraction_field_element.cpython-314t-aarch64-linux-musl.so +0 -0
  480. sage/rings/fraction_field_element.pyx +1357 -0
  481. sage/rings/function_field/all.py +7 -0
  482. sage/rings/function_field/all__sagemath_categories.py +2 -0
  483. sage/rings/function_field/constructor.py +218 -0
  484. sage/rings/function_field/element.cpython-314t-aarch64-linux-musl.so +0 -0
  485. sage/rings/function_field/element.pxd +11 -0
  486. sage/rings/function_field/element.pyx +1008 -0
  487. sage/rings/function_field/element_rational.cpython-314t-aarch64-linux-musl.so +0 -0
  488. sage/rings/function_field/element_rational.pyx +513 -0
  489. sage/rings/function_field/extensions.py +230 -0
  490. sage/rings/function_field/function_field.py +1468 -0
  491. sage/rings/function_field/function_field_rational.py +1005 -0
  492. sage/rings/function_field/ideal.py +1155 -0
  493. sage/rings/function_field/ideal_rational.py +629 -0
  494. sage/rings/function_field/jacobian_base.py +826 -0
  495. sage/rings/function_field/jacobian_hess.py +1053 -0
  496. sage/rings/function_field/jacobian_khuri_makdisi.py +1027 -0
  497. sage/rings/function_field/maps.py +1039 -0
  498. sage/rings/function_field/order.py +281 -0
  499. sage/rings/function_field/order_basis.py +586 -0
  500. sage/rings/function_field/order_rational.py +576 -0
  501. sage/rings/function_field/place.py +426 -0
  502. sage/rings/function_field/place_rational.py +181 -0
  503. sage/rings/generic.py +320 -0
  504. sage/rings/homset.py +332 -0
  505. sage/rings/ideal.py +1885 -0
  506. sage/rings/ideal_monoid.py +215 -0
  507. sage/rings/infinity.py +1890 -0
  508. sage/rings/integer.cpython-314t-aarch64-linux-musl.so +0 -0
  509. sage/rings/integer.pxd +45 -0
  510. sage/rings/integer.pyx +7874 -0
  511. sage/rings/integer_ring.cpython-314t-aarch64-linux-musl.so +0 -0
  512. sage/rings/integer_ring.pxd +8 -0
  513. sage/rings/integer_ring.pyx +1693 -0
  514. sage/rings/laurent_series_ring.py +931 -0
  515. sage/rings/laurent_series_ring_element.cpython-314t-aarch64-linux-musl.so +0 -0
  516. sage/rings/laurent_series_ring_element.pxd +11 -0
  517. sage/rings/laurent_series_ring_element.pyx +1927 -0
  518. sage/rings/lazy_series.py +7815 -0
  519. sage/rings/lazy_series_ring.py +4356 -0
  520. sage/rings/localization.py +1043 -0
  521. sage/rings/morphism.cpython-314t-aarch64-linux-musl.so +0 -0
  522. sage/rings/morphism.pxd +39 -0
  523. sage/rings/morphism.pyx +3299 -0
  524. sage/rings/multi_power_series_ring.py +1145 -0
  525. sage/rings/multi_power_series_ring_element.py +2184 -0
  526. sage/rings/noncommutative_ideals.cpython-314t-aarch64-linux-musl.so +0 -0
  527. sage/rings/noncommutative_ideals.pyx +423 -0
  528. sage/rings/number_field/all__sagemath_categories.py +1 -0
  529. sage/rings/number_field/number_field_base.cpython-314t-aarch64-linux-musl.so +0 -0
  530. sage/rings/number_field/number_field_base.pxd +8 -0
  531. sage/rings/number_field/number_field_base.pyx +507 -0
  532. sage/rings/number_field/number_field_element_base.cpython-314t-aarch64-linux-musl.so +0 -0
  533. sage/rings/number_field/number_field_element_base.pxd +6 -0
  534. sage/rings/number_field/number_field_element_base.pyx +36 -0
  535. sage/rings/number_field/number_field_ideal.py +3550 -0
  536. sage/rings/padics/all__sagemath_categories.py +4 -0
  537. sage/rings/padics/local_generic.py +1670 -0
  538. sage/rings/padics/local_generic_element.cpython-314t-aarch64-linux-musl.so +0 -0
  539. sage/rings/padics/local_generic_element.pxd +5 -0
  540. sage/rings/padics/local_generic_element.pyx +1017 -0
  541. sage/rings/padics/misc.py +256 -0
  542. sage/rings/padics/padic_generic.py +1911 -0
  543. sage/rings/padics/pow_computer.cpython-314t-aarch64-linux-musl.so +0 -0
  544. sage/rings/padics/pow_computer.pxd +38 -0
  545. sage/rings/padics/pow_computer.pyx +671 -0
  546. sage/rings/padics/precision_error.py +24 -0
  547. sage/rings/polynomial/all__sagemath_categories.py +25 -0
  548. sage/rings/polynomial/commutative_polynomial.cpython-314t-aarch64-linux-musl.so +0 -0
  549. sage/rings/polynomial/commutative_polynomial.pxd +6 -0
  550. sage/rings/polynomial/commutative_polynomial.pyx +24 -0
  551. sage/rings/polynomial/cyclotomic.cpython-314t-aarch64-linux-musl.so +0 -0
  552. sage/rings/polynomial/cyclotomic.pyx +404 -0
  553. sage/rings/polynomial/flatten.py +711 -0
  554. sage/rings/polynomial/ideal.py +102 -0
  555. sage/rings/polynomial/infinite_polynomial_element.py +1768 -0
  556. sage/rings/polynomial/infinite_polynomial_ring.py +1653 -0
  557. sage/rings/polynomial/laurent_polynomial.cpython-314t-aarch64-linux-musl.so +0 -0
  558. sage/rings/polynomial/laurent_polynomial.pxd +18 -0
  559. sage/rings/polynomial/laurent_polynomial.pyx +2190 -0
  560. sage/rings/polynomial/laurent_polynomial_ideal.py +590 -0
  561. sage/rings/polynomial/laurent_polynomial_ring.py +832 -0
  562. sage/rings/polynomial/laurent_polynomial_ring_base.py +708 -0
  563. sage/rings/polynomial/multi_polynomial.cpython-314t-aarch64-linux-musl.so +0 -0
  564. sage/rings/polynomial/multi_polynomial.pxd +12 -0
  565. sage/rings/polynomial/multi_polynomial.pyx +3082 -0
  566. sage/rings/polynomial/multi_polynomial_element.py +2570 -0
  567. sage/rings/polynomial/multi_polynomial_ideal.py +5771 -0
  568. sage/rings/polynomial/multi_polynomial_ring.py +947 -0
  569. sage/rings/polynomial/multi_polynomial_ring_base.cpython-314t-aarch64-linux-musl.so +0 -0
  570. sage/rings/polynomial/multi_polynomial_ring_base.pxd +15 -0
  571. sage/rings/polynomial/multi_polynomial_ring_base.pyx +1855 -0
  572. sage/rings/polynomial/multi_polynomial_sequence.py +2204 -0
  573. sage/rings/polynomial/polydict.cpython-314t-aarch64-linux-musl.so +0 -0
  574. sage/rings/polynomial/polydict.pxd +45 -0
  575. sage/rings/polynomial/polydict.pyx +2701 -0
  576. sage/rings/polynomial/polynomial_compiled.cpython-314t-aarch64-linux-musl.so +0 -0
  577. sage/rings/polynomial/polynomial_compiled.pxd +59 -0
  578. sage/rings/polynomial/polynomial_compiled.pyx +509 -0
  579. sage/rings/polynomial/polynomial_element.cpython-314t-aarch64-linux-musl.so +0 -0
  580. sage/rings/polynomial/polynomial_element.pxd +64 -0
  581. sage/rings/polynomial/polynomial_element.pyx +13255 -0
  582. sage/rings/polynomial/polynomial_element_generic.py +1637 -0
  583. sage/rings/polynomial/polynomial_fateman.py +97 -0
  584. sage/rings/polynomial/polynomial_quotient_ring.py +2465 -0
  585. sage/rings/polynomial/polynomial_quotient_ring_element.py +779 -0
  586. sage/rings/polynomial/polynomial_ring.py +3784 -0
  587. sage/rings/polynomial/polynomial_ring_constructor.py +1051 -0
  588. sage/rings/polynomial/polynomial_ring_homomorphism.cpython-314t-aarch64-linux-musl.so +0 -0
  589. sage/rings/polynomial/polynomial_ring_homomorphism.pxd +5 -0
  590. sage/rings/polynomial/polynomial_ring_homomorphism.pyx +121 -0
  591. sage/rings/polynomial/polynomial_singular_interface.py +549 -0
  592. sage/rings/polynomial/symmetric_ideal.py +989 -0
  593. sage/rings/polynomial/symmetric_reduction.cpython-314t-aarch64-linux-musl.so +0 -0
  594. sage/rings/polynomial/symmetric_reduction.pxd +8 -0
  595. sage/rings/polynomial/symmetric_reduction.pyx +669 -0
  596. sage/rings/polynomial/term_order.py +2279 -0
  597. sage/rings/polynomial/toy_buchberger.py +449 -0
  598. sage/rings/polynomial/toy_d_basis.py +387 -0
  599. sage/rings/polynomial/toy_variety.py +362 -0
  600. sage/rings/power_series_mpoly.cpython-314t-aarch64-linux-musl.so +0 -0
  601. sage/rings/power_series_mpoly.pxd +9 -0
  602. sage/rings/power_series_mpoly.pyx +161 -0
  603. sage/rings/power_series_poly.cpython-314t-aarch64-linux-musl.so +0 -0
  604. sage/rings/power_series_poly.pxd +10 -0
  605. sage/rings/power_series_poly.pyx +1317 -0
  606. sage/rings/power_series_ring.py +1441 -0
  607. sage/rings/power_series_ring_element.cpython-314t-aarch64-linux-musl.so +0 -0
  608. sage/rings/power_series_ring_element.pxd +12 -0
  609. sage/rings/power_series_ring_element.pyx +3028 -0
  610. sage/rings/puiseux_series_ring.py +487 -0
  611. sage/rings/puiseux_series_ring_element.cpython-314t-aarch64-linux-musl.so +0 -0
  612. sage/rings/puiseux_series_ring_element.pxd +7 -0
  613. sage/rings/puiseux_series_ring_element.pyx +1055 -0
  614. sage/rings/qqbar_decorators.py +167 -0
  615. sage/rings/quotient_ring.py +1598 -0
  616. sage/rings/quotient_ring_element.py +979 -0
  617. sage/rings/rational.cpython-314t-aarch64-linux-musl.so +0 -0
  618. sage/rings/rational.pxd +20 -0
  619. sage/rings/rational.pyx +4284 -0
  620. sage/rings/rational_field.py +1730 -0
  621. sage/rings/real_double.cpython-314t-aarch64-linux-musl.so +0 -0
  622. sage/rings/real_double.pxd +16 -0
  623. sage/rings/real_double.pyx +2218 -0
  624. sage/rings/real_lazy.cpython-314t-aarch64-linux-musl.so +0 -0
  625. sage/rings/real_lazy.pxd +30 -0
  626. sage/rings/real_lazy.pyx +1773 -0
  627. sage/rings/ring.cpython-314t-aarch64-linux-musl.so +0 -0
  628. sage/rings/ring.pxd +30 -0
  629. sage/rings/ring.pyx +850 -0
  630. sage/rings/semirings/all.py +3 -0
  631. sage/rings/semirings/non_negative_integer_semiring.py +107 -0
  632. sage/rings/semirings/tropical_mpolynomial.py +972 -0
  633. sage/rings/semirings/tropical_polynomial.py +997 -0
  634. sage/rings/semirings/tropical_semiring.cpython-314t-aarch64-linux-musl.so +0 -0
  635. sage/rings/semirings/tropical_semiring.pyx +676 -0
  636. sage/rings/semirings/tropical_variety.py +1701 -0
  637. sage/rings/sum_of_squares.cpython-314t-aarch64-linux-musl.so +0 -0
  638. sage/rings/sum_of_squares.pxd +3 -0
  639. sage/rings/sum_of_squares.pyx +336 -0
  640. sage/rings/tests.py +504 -0
  641. sage/schemes/affine/affine_homset.py +508 -0
  642. sage/schemes/affine/affine_morphism.py +1574 -0
  643. sage/schemes/affine/affine_point.py +460 -0
  644. sage/schemes/affine/affine_rational_point.py +308 -0
  645. sage/schemes/affine/affine_space.py +1264 -0
  646. sage/schemes/affine/affine_subscheme.py +592 -0
  647. sage/schemes/affine/all.py +25 -0
  648. sage/schemes/all__sagemath_categories.py +5 -0
  649. sage/schemes/generic/algebraic_scheme.py +2092 -0
  650. sage/schemes/generic/all.py +5 -0
  651. sage/schemes/generic/ambient_space.py +400 -0
  652. sage/schemes/generic/divisor.py +465 -0
  653. sage/schemes/generic/divisor_group.py +313 -0
  654. sage/schemes/generic/glue.py +84 -0
  655. sage/schemes/generic/homset.py +820 -0
  656. sage/schemes/generic/hypersurface.py +234 -0
  657. sage/schemes/generic/morphism.py +2107 -0
  658. sage/schemes/generic/point.py +237 -0
  659. sage/schemes/generic/scheme.py +1190 -0
  660. sage/schemes/generic/spec.py +199 -0
  661. sage/schemes/product_projective/all.py +6 -0
  662. sage/schemes/product_projective/homset.py +236 -0
  663. sage/schemes/product_projective/morphism.py +517 -0
  664. sage/schemes/product_projective/point.py +568 -0
  665. sage/schemes/product_projective/rational_point.py +550 -0
  666. sage/schemes/product_projective/space.py +1301 -0
  667. sage/schemes/product_projective/subscheme.py +466 -0
  668. sage/schemes/projective/all.py +24 -0
  669. sage/schemes/projective/proj_bdd_height.py +453 -0
  670. sage/schemes/projective/projective_homset.py +718 -0
  671. sage/schemes/projective/projective_morphism.py +2792 -0
  672. sage/schemes/projective/projective_point.py +1484 -0
  673. sage/schemes/projective/projective_rational_point.py +569 -0
  674. sage/schemes/projective/projective_space.py +2571 -0
  675. sage/schemes/projective/projective_subscheme.py +1574 -0
  676. sage/sets/all.py +17 -0
  677. sage/sets/cartesian_product.py +376 -0
  678. sage/sets/condition_set.py +525 -0
  679. sage/sets/disjoint_set.cpython-314t-aarch64-linux-musl.so +0 -0
  680. sage/sets/disjoint_set.pxd +36 -0
  681. sage/sets/disjoint_set.pyx +998 -0
  682. sage/sets/disjoint_union_enumerated_sets.py +625 -0
  683. sage/sets/family.cpython-314t-aarch64-linux-musl.so +0 -0
  684. sage/sets/family.pxd +12 -0
  685. sage/sets/family.pyx +1556 -0
  686. sage/sets/finite_enumerated_set.py +406 -0
  687. sage/sets/finite_set_map_cy.cpython-314t-aarch64-linux-musl.so +0 -0
  688. sage/sets/finite_set_map_cy.pxd +34 -0
  689. sage/sets/finite_set_map_cy.pyx +708 -0
  690. sage/sets/finite_set_maps.py +591 -0
  691. sage/sets/image_set.py +448 -0
  692. sage/sets/integer_range.py +829 -0
  693. sage/sets/non_negative_integers.py +241 -0
  694. sage/sets/positive_integers.py +93 -0
  695. sage/sets/primes.py +188 -0
  696. sage/sets/real_set.py +2760 -0
  697. sage/sets/recursively_enumerated_set.cpython-314t-aarch64-linux-musl.so +0 -0
  698. sage/sets/recursively_enumerated_set.pxd +31 -0
  699. sage/sets/recursively_enumerated_set.pyx +2082 -0
  700. sage/sets/set.py +2083 -0
  701. sage/sets/set_from_iterator.py +1021 -0
  702. sage/sets/totally_ordered_finite_set.py +329 -0
  703. sage/symbolic/all__sagemath_categories.py +1 -0
  704. sage/symbolic/function.cpython-314t-aarch64-linux-musl.so +0 -0
  705. sage/symbolic/function.pxd +29 -0
  706. sage/symbolic/function.pyx +1488 -0
  707. sage/symbolic/symbols.py +56 -0
  708. sage/tests/all__sagemath_categories.py +1 -0
  709. sage/tests/cython.cpython-314t-aarch64-linux-musl.so +0 -0
  710. sage/tests/cython.pyx +37 -0
  711. sage/tests/stl_vector.cpython-314t-aarch64-linux-musl.so +0 -0
  712. sage/tests/stl_vector.pyx +171 -0
  713. sage/typeset/all.py +6 -0
  714. sage/typeset/ascii_art.py +295 -0
  715. sage/typeset/character_art.py +789 -0
  716. sage/typeset/character_art_factory.py +572 -0
  717. sage/typeset/symbols.py +334 -0
  718. sage/typeset/unicode_art.py +183 -0
  719. sage/typeset/unicode_characters.py +101 -0
@@ -0,0 +1,481 @@
1
+ # sage_setup: distribution = sagemath-categories
2
+ # sage.doctest: needs sage.symbolic
3
+ """
4
+ Functional notation support for common calculus methods
5
+
6
+ EXAMPLES: We illustrate each of the calculus functional functions.
7
+
8
+ ::
9
+
10
+ sage: simplify(x - x)
11
+ 0
12
+ sage: a = var('a')
13
+ sage: derivative(x^a + sin(x), x)
14
+ a*x^(a - 1) + cos(x)
15
+ sage: diff(x^a + sin(x), x)
16
+ a*x^(a - 1) + cos(x)
17
+ sage: derivative(x^a + sin(x), x)
18
+ a*x^(a - 1) + cos(x)
19
+ sage: integral(a*x*sin(x), x)
20
+ -(x*cos(x) - sin(x))*a
21
+ sage: integrate(a*x*sin(x), x)
22
+ -(x*cos(x) - sin(x))*a
23
+ sage: limit(a*sin(x)/x, x=0)
24
+ a
25
+ sage: taylor(a*sin(x)/x, x, 0, 4)
26
+ 1/120*a*x^4 - 1/6*a*x^2 + a
27
+ sage: expand((x - a)^3)
28
+ -a^3 + 3*a^2*x - 3*a*x^2 + x^3
29
+ """
30
+ from sage.structure.element import Expression
31
+
32
+
33
+ def simplify(f, algorithm='maxima', **kwds):
34
+ r"""
35
+ Simplify the expression `f`.
36
+
37
+ See the documentation of the
38
+ :meth:`~sage.symbolic.expression.Expression.simplify` method of symbolic
39
+ expressions for details on options.
40
+
41
+ EXAMPLES:
42
+
43
+ We simplify the expression `i + x - x`::
44
+
45
+ sage: f = I + x - x; simplify(f)
46
+ I
47
+
48
+ In fact, printing `f` yields the same thing - i.e., the
49
+ simplified form.
50
+
51
+ Some simplifications are algorithm-specific::
52
+
53
+ sage: x, t = var("x, t")
54
+ sage: ex = 1/2*I*x + 1/2*I*sqrt(x^2 - 1) + 1/2/(I*x + I*sqrt(x^2 - 1))
55
+ sage: simplify(ex)
56
+ 1/2*I*x + 1/2*I*sqrt(x^2 - 1) + 1/(2*I*x + 2*I*sqrt(x^2 - 1))
57
+ sage: simplify(ex, algorithm='giac') # needs giac
58
+ I*sqrt(x^2 - 1)
59
+ """
60
+ try:
61
+ return f.simplify(algorithm=algorithm, **kwds)
62
+ except (TypeError, AttributeError):
63
+ pass
64
+ try:
65
+ return f.simplify()
66
+ except AttributeError:
67
+ return f
68
+
69
+
70
+ def derivative(f, *args, **kwds):
71
+ r"""
72
+ The derivative of `f`.
73
+
74
+ Repeated differentiation is supported by the syntax given in the
75
+ examples below.
76
+
77
+ ALIAS: diff
78
+
79
+ EXAMPLES: We differentiate a callable symbolic function::
80
+
81
+ sage: f(x,y) = x*y + sin(x^2) + e^(-x)
82
+ sage: f
83
+ (x, y) |--> x*y + e^(-x) + sin(x^2)
84
+ sage: derivative(f, x)
85
+ (x, y) |--> 2*x*cos(x^2) + y - e^(-x)
86
+ sage: derivative(f, y)
87
+ (x, y) |--> x
88
+
89
+ We differentiate a polynomial::
90
+
91
+ sage: t = polygen(QQ, 't')
92
+ sage: f = (1-t)^5; f
93
+ -t^5 + 5*t^4 - 10*t^3 + 10*t^2 - 5*t + 1
94
+ sage: derivative(f)
95
+ -5*t^4 + 20*t^3 - 30*t^2 + 20*t - 5
96
+ sage: derivative(f, t)
97
+ -5*t^4 + 20*t^3 - 30*t^2 + 20*t - 5
98
+ sage: derivative(f, t, t)
99
+ -20*t^3 + 60*t^2 - 60*t + 20
100
+ sage: derivative(f, t, 2)
101
+ -20*t^3 + 60*t^2 - 60*t + 20
102
+ sage: derivative(f, 2)
103
+ -20*t^3 + 60*t^2 - 60*t + 20
104
+
105
+ We differentiate a symbolic expression::
106
+
107
+ sage: var('a x')
108
+ (a, x)
109
+ sage: f = exp(sin(a - x^2))/x
110
+ sage: derivative(f, x)
111
+ -2*cos(-x^2 + a)*e^(sin(-x^2 + a)) - e^(sin(-x^2 + a))/x^2
112
+ sage: derivative(f, a)
113
+ cos(-x^2 + a)*e^(sin(-x^2 + a))/x
114
+
115
+ Syntax for repeated differentiation::
116
+
117
+ sage: R.<u, v> = PolynomialRing(QQ)
118
+ sage: f = u^4*v^5
119
+ sage: derivative(f, u)
120
+ 4*u^3*v^5
121
+ sage: f.derivative(u) # can always use method notation too
122
+ 4*u^3*v^5
123
+
124
+ ::
125
+
126
+ sage: derivative(f, u, u)
127
+ 12*u^2*v^5
128
+ sage: derivative(f, u, u, u)
129
+ 24*u*v^5
130
+ sage: derivative(f, u, 3)
131
+ 24*u*v^5
132
+
133
+ ::
134
+
135
+ sage: derivative(f, u, v)
136
+ 20*u^3*v^4
137
+ sage: derivative(f, u, 2, v)
138
+ 60*u^2*v^4
139
+ sage: derivative(f, u, v, 2)
140
+ 80*u^3*v^3
141
+ sage: derivative(f, [u, v, v])
142
+ 80*u^3*v^3
143
+
144
+ We differentiate a scalar field on a manifold::
145
+
146
+ sage: M = Manifold(2, 'M')
147
+ sage: X.<x,y> = M.chart()
148
+ sage: f = M.scalar_field(x^2*y, name='f')
149
+ sage: derivative(f)
150
+ 1-form df on the 2-dimensional differentiable manifold M
151
+ sage: derivative(f).display()
152
+ df = 2*x*y dx + x^2 dy
153
+
154
+ We differentiate a differentiable form, getting its exterior derivative::
155
+
156
+ sage: a = M.one_form(-y, x, name='a'); a.display()
157
+ a = -y dx + x dy
158
+ sage: derivative(a)
159
+ 2-form da on the 2-dimensional differentiable manifold M
160
+ sage: derivative(a).display()
161
+ da = 2 dx∧dy
162
+ """
163
+ try:
164
+ return f.derivative(*args, **kwds)
165
+ except AttributeError:
166
+ pass
167
+ if not isinstance(f, Expression):
168
+ from sage.symbolic.ring import SR
169
+ f = SR(f)
170
+ return f.derivative(*args, **kwds)
171
+
172
+
173
+ diff = derivative
174
+
175
+
176
+ def integral(f, *args, **kwds):
177
+ r"""
178
+ The integral of `f`.
179
+
180
+ EXAMPLES::
181
+
182
+ sage: integral(sin(x), x)
183
+ -cos(x)
184
+ sage: integral(sin(x)^2, x, pi, 123*pi/2)
185
+ 121/4*pi
186
+ sage: integral( sin(x), x, 0, pi)
187
+ 2
188
+
189
+ We integrate a symbolic function::
190
+
191
+ sage: f(x,y,z) = x*y/z + sin(z)
192
+ sage: integral(f, z)
193
+ (x, y, z) |--> x*y*log(z) - cos(z)
194
+
195
+ ::
196
+
197
+ sage: var('a,b')
198
+ (a, b)
199
+ sage: assume(b-a>0)
200
+ sage: integral( sin(x), x, a, b)
201
+ cos(a) - cos(b)
202
+ sage: forget()
203
+
204
+ ::
205
+
206
+ sage: integral(x/(x^3-1), x)
207
+ 1/3*sqrt(3)*arctan(1/3*sqrt(3)*(2*x + 1)) - 1/6*log(x^2 + x + 1) + 1/3*log(x - 1)
208
+
209
+ ::
210
+
211
+ sage: integral( exp(-x^2), x )
212
+ 1/2*sqrt(pi)*erf(x)
213
+
214
+ We define the Gaussian, plot and integrate it numerically and
215
+ symbolically::
216
+
217
+ sage: f(x) = 1/(sqrt(2*pi)) * e^(-x^2/2)
218
+ sage: P = plot(f, -4, 4, hue=0.8, thickness=2) # needs sage.plot
219
+ sage: P.show(ymin=0, ymax=0.4) # needs sage.plot
220
+ sage: numerical_integral(f, -4, 4) # random output
221
+ (0.99993665751633376, 1.1101527003413533e-14)
222
+ sage: integrate(f, x)
223
+ x |--> 1/2*erf(1/2*sqrt(2)*x)
224
+
225
+ You can have Sage calculate multiple integrals. For example,
226
+ consider the function `exp(y^2)` on the region between the
227
+ lines `x=y`, `x=1`, and `y=0`. We find the
228
+ value of the integral on this region using the command::
229
+
230
+ sage: area = integral(integral(exp(y^2),x,0,y),y,0,1); area
231
+ 1/2*e - 1/2
232
+ sage: float(area)
233
+ 0.859140914229522...
234
+
235
+ We compute the line integral of `\sin(x)` along the arc of
236
+ the curve `x=y^4` from `(1,-1)` to
237
+ `(1,1)`::
238
+
239
+ sage: t = var('t')
240
+ sage: (x,y) = (t^4,t)
241
+ sage: (dx,dy) = (diff(x,t), diff(y,t))
242
+ sage: integral(sin(x)*dx, t,-1, 1)
243
+ 0
244
+ sage: restore('x,y') # restore the symbolic variables x and y
245
+
246
+ Sage is now (:issue:`27958`) able to compute the following integral::
247
+
248
+ sage: integral(exp(-x^2)*log(x), x) # long time
249
+ 1/2*sqrt(pi)*erf(x)*log(x) - x*hypergeometric((1/2, 1/2), (3/2, 3/2), -x^2)
250
+
251
+ and its value::
252
+
253
+ sage: integral( exp(-x^2)*ln(x), x, 0, oo)
254
+ -1/4*sqrt(pi)*(euler_gamma + 2*log(2))
255
+
256
+ This definite integral is easy::
257
+
258
+ sage: integral( ln(x)/x, x, 1, 2)
259
+ 1/2*log(2)^2
260
+
261
+ Sage cannot do this elliptic integral (yet)::
262
+
263
+ sage: integral(1/sqrt(2*t^4 - 3*t^2 - 2), t, 2, 3)
264
+ integrate(1/(sqrt(2*t^2 + 1)*sqrt(t^2 - 2)), t, 2, 3)
265
+
266
+ A double integral::
267
+
268
+ sage: y = var('y')
269
+ sage: integral(integral(x*y^2, x, 0, y), y, -2, 2)
270
+ 32/5
271
+
272
+ This illustrates using assumptions::
273
+
274
+ sage: integral(abs(x), x, 0, 5)
275
+ 25/2
276
+ sage: a = var("a")
277
+ sage: integral(abs(x), x, 0, a)
278
+ 1/2*a*abs(a)
279
+ sage: integral(abs(x)*x, x, 0, a)
280
+ Traceback (most recent call last):
281
+ ...
282
+ ValueError: Computation failed since Maxima requested additional
283
+ constraints; using the 'assume' command before evaluation
284
+ *may* help (example of legal syntax is 'assume(a>0)',
285
+ see `assume?` for more details)
286
+ Is a positive, negative or zero?
287
+ sage: assume(a>0)
288
+ sage: integral(abs(x)*x, x, 0, a)
289
+ 1/3*a^3
290
+ sage: forget() # forget the assumptions.
291
+
292
+ We integrate and differentiate a huge mess::
293
+
294
+ sage: f = (x^2-1+3*(1+x^2)^(1/3))/(1+x^2)^(2/3)*x/(x^2+2)^2
295
+ sage: g = integral(f, x)
296
+ sage: h = f - diff(g, x)
297
+
298
+ ::
299
+
300
+ sage: [float(h(x=i)) for i in range(5)] #random
301
+
302
+ [0.0,
303
+ -1.1102230246251565e-16,
304
+ -5.5511151231257827e-17,
305
+ -5.5511151231257827e-17,
306
+ -6.9388939039072284e-17]
307
+ sage: h.factor()
308
+ 0
309
+ sage: bool(h == 0)
310
+ True
311
+ """
312
+ try:
313
+ return f.integral(*args, **kwds)
314
+ except AttributeError:
315
+ pass
316
+
317
+ if not isinstance(f, Expression):
318
+ from sage.symbolic.ring import SR
319
+ f = SR(f)
320
+ return f.integral(*args, **kwds)
321
+
322
+
323
+ integrate = integral
324
+
325
+
326
+ def limit(f, dir=None, taylor=False, **argv):
327
+ r"""
328
+ Return the limit as the variable `v` approaches `a`
329
+ from the given direction.
330
+
331
+ ::
332
+
333
+ limit(expr, x = a)
334
+ limit(expr, x = a, dir='above')
335
+
336
+
337
+ INPUT:
338
+
339
+ - ``dir`` -- (default: ``None``) dir may have the value ``'plus'`` (or
340
+ ``'above'``) for a limit from above, ``'minus'`` (or ``'below'``) for a
341
+ limit from below, or may be omitted (implying a two-sided limit is to be
342
+ computed).
343
+
344
+ - ``taylor`` -- (default: ``False``) if ``True``, use Taylor
345
+ series, which allows more limits to be computed (but may also
346
+ crash in some obscure cases due to bugs in Maxima).
347
+
348
+ - ``\*\*argv`` -- 1 named parameter
349
+
350
+ ALIAS: You can also use lim instead of limit.
351
+
352
+ EXAMPLES::
353
+
354
+ sage: limit(sin(x)/x, x=0)
355
+ 1
356
+ sage: limit(exp(x), x=oo)
357
+ +Infinity
358
+ sage: lim(exp(x), x=-oo)
359
+ 0
360
+ sage: lim(1/x, x=0)
361
+ Infinity
362
+ sage: limit(sqrt(x^2+x+1)+x, taylor=True, x=-oo)
363
+ -1/2
364
+ sage: limit((tan(sin(x)) - sin(tan(x)))/x^7, taylor=True, x=0)
365
+ 1/30
366
+
367
+ Sage does not know how to do this limit (which is 0), so it returns
368
+ it unevaluated::
369
+
370
+ sage: lim(exp(x^2)*(1-erf(x)), x=infinity)
371
+ -limit((erf(x) - 1)*e^(x^2), x, +Infinity)
372
+ """
373
+ if not isinstance(f, Expression):
374
+ from sage.symbolic.ring import SR
375
+ f = SR(f)
376
+ return f.limit(dir=dir, taylor=taylor, **argv)
377
+
378
+
379
+ lim = limit
380
+
381
+
382
+ def taylor(f, *args):
383
+ """
384
+ Expand ``self`` in a truncated Taylor or Laurent series in the
385
+ variable `v` around the point `a`, containing terms
386
+ through `(x - a)^n`. Functions in more variables are also
387
+ supported.
388
+
389
+ INPUT:
390
+
391
+ - ``*args`` -- the following notation is supported
392
+
393
+ - ``x``, ``a``, ``n`` -- variable, point, degree
394
+
395
+ - ``(x, a)``, ``(y, b)``, ..., ``n`` -- variables with points, degree of
396
+ polynomial
397
+
398
+ EXAMPLES::
399
+
400
+ sage: var('x,k,n')
401
+ (x, k, n)
402
+ sage: taylor (sqrt (1 - k^2*sin(x)^2), x, 0, 6)
403
+ -1/720*(45*k^6 - 60*k^4 + 16*k^2)*x^6 - 1/24*(3*k^4 - 4*k^2)*x^4 - 1/2*k^2*x^2 + 1
404
+
405
+ ::
406
+
407
+ sage: taylor ((x + 1)^n, x, 0, 4)
408
+ 1/24*(n^4 - 6*n^3 + 11*n^2 - 6*n)*x^4 + 1/6*(n^3 - 3*n^2 + 2*n)*x^3 + 1/2*(n^2 - n)*x^2 + n*x + 1
409
+
410
+ ::
411
+
412
+ sage: taylor ((x + 1)^n, x, 0, 4)
413
+ 1/24*(n^4 - 6*n^3 + 11*n^2 - 6*n)*x^4 + 1/6*(n^3 - 3*n^2 + 2*n)*x^3 + 1/2*(n^2 - n)*x^2 + n*x + 1
414
+
415
+ Taylor polynomial in two variables::
416
+
417
+ sage: x,y=var('x y'); taylor(x*y^3,(x,1),(y,-1),4)
418
+ (x - 1)*(y + 1)^3 - 3*(x - 1)*(y + 1)^2 + (y + 1)^3 + 3*(x - 1)*(y + 1) - 3*(y + 1)^2 - x + 3*y + 3
419
+ """
420
+ if not isinstance(f, Expression):
421
+ from sage.symbolic.ring import SR
422
+ f = SR(f)
423
+ return f.taylor(*args)
424
+
425
+
426
+ def expand(x, *args, **kwds):
427
+ """
428
+ EXAMPLES::
429
+
430
+ sage: a = (x-1)*(x^2 - 1); a
431
+ (x^2 - 1)*(x - 1)
432
+ sage: expand(a)
433
+ x^3 - x^2 - x + 1
434
+
435
+ You can also use expand on polynomial, integer, and other
436
+ factorizations::
437
+
438
+ sage: x = polygen(ZZ)
439
+ sage: F = factor(x^12 - 1); F
440
+ (x - 1) * (x + 1) * (x^2 - x + 1) * (x^2 + 1) * (x^2 + x + 1) * (x^4 - x^2 + 1)
441
+ sage: expand(F)
442
+ x^12 - 1
443
+ sage: F.expand()
444
+ x^12 - 1
445
+ sage: F = factor(2007); F
446
+ 3^2 * 223
447
+ sage: expand(F)
448
+ 2007
449
+
450
+ Note: If you want to compute the expanded form of a polynomial
451
+ arithmetic operation quickly and the coefficients of the polynomial
452
+ all lie in some ring, e.g., the integers, it is vastly faster to
453
+ create a polynomial ring and do the arithmetic there.
454
+
455
+ ::
456
+
457
+ sage: x = polygen(ZZ) # polynomial over a given base ring.
458
+ sage: f = sum(x^n for n in range(5))
459
+ sage: f*f # much faster, even if the degree is huge
460
+ x^8 + 2*x^7 + 3*x^6 + 4*x^5 + 5*x^4 + 4*x^3 + 3*x^2 + 2*x + 1
461
+
462
+ TESTS::
463
+
464
+ sage: t1 = (sqrt(3)-3)*(sqrt(3)+1)/6
465
+ sage: tt1 = -1/sqrt(3)
466
+ sage: t2 = sqrt(3)/6
467
+ sage: float(t1)
468
+ -0.577350269189625...
469
+ sage: float(tt1)
470
+ -0.577350269189625...
471
+ sage: float(t2)
472
+ 0.28867513459481287
473
+ sage: float(expand(t1 + t2))
474
+ -0.288675134594812...
475
+ sage: float(expand(tt1 + t2))
476
+ -0.288675134594812...
477
+ """
478
+ try:
479
+ return x.expand(*args, **kwds)
480
+ except AttributeError:
481
+ return x
@@ -0,0 +1,151 @@
1
+ # sage_setup: distribution = sagemath-categories
2
+ # sage.doctest: needs sage.symbolic
3
+ r"""
4
+ Calculus functions
5
+ """
6
+ from sage.misc.lazy_import import lazy_import
7
+ from sage.structure.element import Matrix, Vector, Expression
8
+
9
+ lazy_import('sage.matrix.constructor', 'matrix')
10
+
11
+ from .functional import diff
12
+
13
+
14
+ def wronskian(*args):
15
+ """
16
+ Return the Wronskian of the provided functions, differentiating with
17
+ respect to the given variable.
18
+
19
+ If no variable is provided, diff(f) is called for each function f.
20
+
21
+ wronskian(f1,...,fn, x) returns the Wronskian of f1,...,fn, with
22
+ derivatives taken with respect to x.
23
+
24
+ wronskian(f1,...,fn) returns the Wronskian of f1,...,fn where
25
+ k'th derivatives are computed by doing ``.derivative(k)`` on each
26
+ function.
27
+
28
+ The Wronskian of a list of functions is a determinant of derivatives.
29
+ The `n`-th row (starting from 0) is a list of the `n`-th derivatives of the
30
+ given functions.
31
+
32
+ For two functions::
33
+
34
+ | f g |
35
+ W(f, g) = det| | = f*g' - g*f'.
36
+ | f' g' |
37
+
38
+ EXAMPLES::
39
+
40
+ sage: wronskian(e^x, x^2)
41
+ -x^2*e^x + 2*x*e^x
42
+
43
+ sage: x,y = var('x, y')
44
+ sage: wronskian(x*y, log(x), x)
45
+ -y*log(x) + y
46
+
47
+ If your functions are in a list, you can use `*' to turn them into
48
+ arguments to :func:`wronskian`::
49
+
50
+ sage: wronskian(*[x^k for k in range(1, 5)])
51
+ 12*x^4
52
+
53
+ If you want to use 'x' as one of the functions in the Wronskian,
54
+ you can't put it last or it will be interpreted as the variable
55
+ with respect to which we differentiate. There are several ways to
56
+ get around this.
57
+
58
+ Two-by-two Wronskian of sin(x) and e^x::
59
+
60
+ sage: wronskian(sin(x), e^x, x)
61
+ -cos(x)*e^x + e^x*sin(x)
62
+
63
+ Or don't put x last::
64
+
65
+ sage: wronskian(x, sin(x), e^x)
66
+ (cos(x)*e^x + e^x*sin(x))*x - 2*e^x*sin(x)
67
+
68
+ Example where one of the functions is constant::
69
+
70
+ sage: wronskian(1, e^(-x), e^(2*x))
71
+ -6*e^x
72
+
73
+ REFERENCES:
74
+
75
+ - :wikipedia:`Wronskian`
76
+ - http://planetmath.org/encyclopedia/WronskianDeterminant.html
77
+
78
+ AUTHORS:
79
+
80
+ - Dan Drake (2008-03-12)
81
+ """
82
+ if not args:
83
+ raise TypeError('wronskian() takes at least one argument (0 given)')
84
+ elif len(args) == 1:
85
+ # a 1x1 Wronskian is just its argument
86
+ return args[0]
87
+ else:
88
+ if isinstance(args[-1], Expression) and args[-1].is_symbol():
89
+ # if last argument is a variable, peel it off and
90
+ # differentiate the other args
91
+ v = args[-1]
92
+ fs = args[0:-1]
93
+
94
+ def row(n):
95
+ return [diff(f, v, n) for f in fs]
96
+ else:
97
+ # if the last argument is not a variable, just run
98
+ # .derivative on everything
99
+ fs = args
100
+
101
+ def row(n):
102
+ return [diff(f, n) for f in fs]
103
+ # NOTE: I rewrote the below as two lines to avoid a possible subtle
104
+ # memory management problem on some platforms (only VMware as far
105
+ # as we know?). See trac #2990.
106
+ # There may still be a real problem that this is just hiding for now.
107
+ return matrix([row(r) for r in range(len(fs))]).determinant()
108
+
109
+
110
+ def jacobian(functions, variables):
111
+ """
112
+ Return the Jacobian matrix, which is the matrix of partial
113
+ derivatives in which the i,j entry of the Jacobian matrix is the
114
+ partial derivative diff(functions[i], variables[j]).
115
+
116
+ EXAMPLES::
117
+
118
+ sage: x,y = var('x,y')
119
+ sage: g=x^2-2*x*y
120
+ sage: jacobian(g, (x,y))
121
+ [2*x - 2*y -2*x]
122
+
123
+ The Jacobian of the Jacobian should give us the "second derivative", which is the Hessian matrix::
124
+
125
+ sage: jacobian(jacobian(g, (x,y)), (x,y))
126
+ [ 2 -2]
127
+ [-2 0]
128
+ sage: g.hessian()
129
+ [ 2 -2]
130
+ [-2 0]
131
+
132
+ sage: f=(x^3*sin(y), cos(x)*sin(y), exp(x))
133
+ sage: jacobian(f, (x,y))
134
+ [ 3*x^2*sin(y) x^3*cos(y)]
135
+ [-sin(x)*sin(y) cos(x)*cos(y)]
136
+ [ e^x 0]
137
+ sage: jacobian(f, (y,x))
138
+ [ x^3*cos(y) 3*x^2*sin(y)]
139
+ [ cos(x)*cos(y) -sin(x)*sin(y)]
140
+ [ 0 e^x]
141
+ """
142
+ if isinstance(functions, Matrix) and (functions.nrows() == 1
143
+ or functions.ncols() == 1):
144
+ functions = functions.list()
145
+ elif not isinstance(functions, (tuple, list, Vector)):
146
+ functions = [functions]
147
+
148
+ if not isinstance(variables, (tuple, list, Vector)):
149
+ variables = [variables]
150
+
151
+ return matrix([[diff(f, v) for v in variables] for f in functions])
@@ -0,0 +1,73 @@
1
+ # sage_setup: distribution = sagemath-categories
2
+ r"""
3
+ Additive groups
4
+ """
5
+ #*****************************************************************************
6
+ # Copyright (C) 2013 Nicolas M. Thiery <nthiery at users.sf.net>
7
+ #
8
+ # Distributed under the terms of the GNU General Public License (GPL)
9
+ # http://www.gnu.org/licenses/
10
+ #******************************************************************************
11
+
12
+ from sage.misc.lazy_import import LazyImport
13
+ from sage.categories.category_with_axiom import CategoryWithAxiom_singleton, CategoryWithAxiom
14
+ from sage.categories.algebra_functor import AlgebrasCategory
15
+ from sage.categories.additive_monoids import AdditiveMonoids
16
+ from sage.cpython.getattr import raw_getattr
17
+ Groups = LazyImport('sage.categories.groups', 'Groups', at_startup=True)
18
+
19
+
20
+ class AdditiveGroups(CategoryWithAxiom_singleton):
21
+ r"""
22
+ The category of additive groups.
23
+
24
+ An *additive group* is a set with an internal binary operation `+` which
25
+ is associative, admits a zero, and where every element can be negated.
26
+
27
+ EXAMPLES::
28
+
29
+ sage: from sage.categories.additive_groups import AdditiveGroups
30
+ sage: from sage.categories.additive_monoids import AdditiveMonoids
31
+ sage: AdditiveGroups()
32
+ Category of additive groups
33
+ sage: AdditiveGroups().super_categories()
34
+ [Category of additive inverse additive unital additive magmas,
35
+ Category of additive monoids]
36
+ sage: AdditiveGroups().all_super_categories()
37
+ [Category of additive groups,
38
+ Category of additive inverse additive unital additive magmas,
39
+ Category of additive monoids,
40
+ Category of additive unital additive magmas,
41
+ Category of additive semigroups,
42
+ Category of additive magmas,
43
+ Category of sets,
44
+ Category of sets with partial maps,
45
+ Category of objects]
46
+
47
+ sage: AdditiveGroups().axioms()
48
+ frozenset({'AdditiveAssociative', 'AdditiveInverse', 'AdditiveUnital'})
49
+ sage: AdditiveGroups() is AdditiveMonoids().AdditiveInverse()
50
+ True
51
+
52
+ TESTS::
53
+
54
+ sage: C = AdditiveGroups()
55
+ sage: TestSuite(C).run()
56
+ """
57
+ _base_category_class_and_axiom = (AdditiveMonoids, "AdditiveInverse")
58
+
59
+ def __lean_init__(self):
60
+ return 'add_group'
61
+
62
+ class Algebras(AlgebrasCategory):
63
+ class ParentMethods:
64
+ group = raw_getattr(Groups.Algebras.ParentMethods, "group")
65
+
66
+ class Finite(CategoryWithAxiom):
67
+ class Algebras(AlgebrasCategory):
68
+ extra_super_categories = raw_getattr(Groups.Finite.Algebras, "extra_super_categories")
69
+
70
+ class ParentMethods:
71
+ __init_extra__ = raw_getattr(Groups.Finite.Algebras.ParentMethods, "__init_extra__")
72
+
73
+ AdditiveCommutative = LazyImport('sage.categories.commutative_additive_groups', 'CommutativeAdditiveGroups', at_startup=True)