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,63 @@
1
+ # sage_setup: distribution = sagemath-categories
2
+ r"""
3
+ Filtered Algebras
4
+ """
5
+ #*****************************************************************************
6
+ # Copyright (C) 2014 Travis Scrimshaw <tscrim at ucdavis.edu>
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.abstract_method import abstract_method
13
+ from sage.categories.filtered_modules import FilteredModulesCategory
14
+
15
+
16
+ class FilteredAlgebras(FilteredModulesCategory):
17
+ r"""
18
+ The category of filtered algebras.
19
+
20
+ An algebra `A` over a commutative ring `R` is *filtered* if
21
+ `A` is endowed with a structure of a filtered `R`-module
22
+ (whose underlying `R`-module structure is identical with
23
+ that of the `R`-algebra `A`) such that the indexing set `I`
24
+ (typically `I = \NN`) is also an additive abelian monoid,
25
+ the unity `1` of `A` belongs to `F_0`, and we have
26
+ `F_i \cdot F_j \subseteq F_{i+j}` for all `i, j \in I`.
27
+
28
+ EXAMPLES::
29
+
30
+ sage: Algebras(ZZ).Filtered()
31
+ Category of filtered algebras over Integer Ring
32
+ sage: Algebras(ZZ).Filtered().super_categories()
33
+ [Category of algebras over Integer Ring,
34
+ Category of filtered modules over Integer Ring]
35
+
36
+ TESTS::
37
+
38
+ sage: TestSuite(Algebras(ZZ).Filtered()).run()
39
+
40
+ REFERENCES:
41
+
42
+ - :wikipedia:`Filtered_algebra`
43
+ """
44
+ class ParentMethods:
45
+ @abstract_method(optional=True)
46
+ def graded_algebra(self):
47
+ """
48
+ Return the associated graded algebra to ``self``.
49
+
50
+ .. TODO::
51
+
52
+ Implement a version of the associated graded algebra
53
+ which does not require ``self`` to have a
54
+ distinguished basis.
55
+
56
+ EXAMPLES::
57
+
58
+ sage: A = AlgebrasWithBasis(ZZ).Filtered().example()
59
+ sage: A.graded_algebra() # needs sage.combinat
60
+ Graded Algebra of An example of a filtered algebra with basis:
61
+ the universal enveloping algebra of
62
+ Lie algebra of RR^3 with cross product over Integer Ring
63
+ """
@@ -0,0 +1,548 @@
1
+ # sage_setup: distribution = sagemath-categories
2
+ r"""
3
+ Filtered Algebras With Basis
4
+
5
+ A filtered algebra with basis over a commutative ring `R`
6
+ is a filtered algebra over `R` endowed with the structure
7
+ of a filtered module with basis (with the same underlying
8
+ filtered-module structure). See
9
+ :class:`~sage.categories.filtered_algebras.FilteredAlgebras` and
10
+ :class:`~sage.categories.filtered_modules_with_basis.FilteredModulesWithBasis`
11
+ for these two notions.
12
+ """
13
+ #*****************************************************************************
14
+ # Copyright (C) 2014 Travis Scrimshaw <tscrim at ucdavis.edu>
15
+ #
16
+ # Distributed under the terms of the GNU General Public License (GPL)
17
+ # http://www.gnu.org/licenses/
18
+ #******************************************************************************
19
+
20
+ from sage.categories.filtered_modules import FilteredModulesCategory
21
+
22
+
23
+ class FilteredAlgebrasWithBasis(FilteredModulesCategory):
24
+ """
25
+ The category of filtered algebras with a distinguished
26
+ homogeneous basis.
27
+
28
+ A filtered algebra with basis over a commutative ring `R`
29
+ is a filtered algebra over `R` endowed with the structure
30
+ of a filtered module with basis (with the same underlying
31
+ filtered-module structure). See
32
+ :class:`~sage.categories.filtered_algebras.FilteredAlgebras` and
33
+ :class:`~sage.categories.filtered_modules_with_basis.FilteredModulesWithBasis`
34
+ for these two notions.
35
+
36
+ EXAMPLES::
37
+
38
+ sage: C = AlgebrasWithBasis(ZZ).Filtered(); C
39
+ Category of filtered algebras with basis over Integer Ring
40
+ sage: sorted(C.super_categories(), key=str)
41
+ [Category of algebras with basis over Integer Ring,
42
+ Category of filtered algebras over Integer Ring,
43
+ Category of filtered modules with basis over Integer Ring]
44
+
45
+ TESTS::
46
+
47
+ sage: TestSuite(C).run()
48
+ """
49
+ class ParentMethods:
50
+ def graded_algebra(self):
51
+ r"""
52
+ Return the associated graded algebra to ``self``.
53
+
54
+ See :class:`~sage.algebras.associated_graded.AssociatedGradedAlgebra`
55
+ for the definition and the properties of this.
56
+
57
+ If the filtered algebra ``self`` with basis is called `A`,
58
+ then this method returns `\operatorname{gr} A`. The method
59
+ :meth:`to_graded_conversion` returns the canonical
60
+ `R`-module isomorphism `A \to \operatorname{gr} A` induced
61
+ by the basis of `A`, and the method
62
+ :meth:`from_graded_conversion` returns the inverse of this
63
+ isomorphism. The method :meth:`projection` projects
64
+ elements of `A` onto `\operatorname{gr} A` according to
65
+ their place in the filtration on `A`.
66
+
67
+ .. WARNING::
68
+
69
+ When not overridden, this method returns the default
70
+ implementation of an associated graded algebra --
71
+ namely, ``AssociatedGradedAlgebra(self)``, where
72
+ ``AssociatedGradedAlgebra`` is
73
+ :class:`~sage.algebras.associated_graded.AssociatedGradedAlgebra`.
74
+ But many instances of :class:`FilteredAlgebrasWithBasis`
75
+ override this method, as the associated graded algebra
76
+ often is (isomorphic) to a simpler object (for instance,
77
+ the associated graded algebra of a graded algebra can be
78
+ identified with the graded algebra itself). Generic code
79
+ that uses associated graded algebras (such as the code
80
+ of the :meth:`induced_graded_map` method below) should
81
+ make sure to only communicate with them via the
82
+ :meth:`to_graded_conversion`,
83
+ :meth:`from_graded_conversion`, and
84
+ :meth:`projection` methods (in particular,
85
+ do not expect there to be a conversion from ``self``
86
+ to ``self.graded_algebra()``; this currently does not
87
+ work for Clifford algebras). Similarly, when
88
+ overriding :meth:`graded_algebra`, make sure to
89
+ accordingly redefine these three methods, unless their
90
+ definitions below still apply to your case (this will
91
+ happen whenever the basis of your :meth:`graded_algebra`
92
+ has the same indexing set as ``self``, and the partition
93
+ of this indexing set according to degree is the same as
94
+ for ``self``).
95
+
96
+ .. TODO::
97
+
98
+ Maybe the thing about the conversion from ``self``
99
+ to ``self.graded_algebra()`` on the Clifford at least
100
+ could be made to work? (I would still warn the user
101
+ against ASSUMING that it must work -- as there is
102
+ probably no way to guarantee it in all cases, and
103
+ we shouldn't require users to mess with
104
+ element constructors.)
105
+
106
+ EXAMPLES::
107
+
108
+ sage: A = AlgebrasWithBasis(ZZ).Filtered().example()
109
+ sage: A.graded_algebra() # needs sage.combinat
110
+ Graded Algebra of An example of a filtered algebra with basis:
111
+ the universal enveloping algebra of
112
+ Lie algebra of RR^3 with cross product over Integer Ring
113
+ """
114
+ from sage.algebras.associated_graded import AssociatedGradedAlgebra
115
+ return AssociatedGradedAlgebra(self)
116
+
117
+ # Maps
118
+
119
+ def to_graded_conversion(self):
120
+ r"""
121
+ Return the canonical `R`-module isomorphism
122
+ `A \to \operatorname{gr} A` induced by the basis of `A`
123
+ (where `A = ` ``self``).
124
+
125
+ This is an isomorphism of `R`-modules, not of algebras. See
126
+ the class documentation :class:`AssociatedGradedAlgebra`.
127
+
128
+ .. SEEALSO::
129
+
130
+ :meth:`from_graded_conversion`
131
+
132
+ EXAMPLES::
133
+
134
+ sage: A = Algebras(QQ).WithBasis().Filtered().example()
135
+ sage: p = A.an_element() + A.algebra_generators()['x'] + 2; p
136
+ U['x']^2*U['y']^2*U['z']^3 + 3*U['x'] + 3*U['y'] + 3
137
+ sage: q = A.to_graded_conversion()(p); q # needs sage.combinat
138
+ bar(U['x']^2*U['y']^2*U['z']^3) + 3*bar(U['x'])
139
+ + 3*bar(U['y']) + 3*bar(1)
140
+ sage: q.parent() is A.graded_algebra() # needs sage.combinat
141
+ True
142
+ """
143
+ base_one = self.base_ring().one()
144
+ return self.module_morphism(diagonal=lambda x: base_one,
145
+ codomain=self.graded_algebra())
146
+
147
+ def from_graded_conversion(self):
148
+ r"""
149
+ Return the inverse of the canonical `R`-module isomorphism
150
+ `A \to \operatorname{gr} A` induced by the basis of `A`
151
+ (where `A = ` ``self``). This inverse is an isomorphism
152
+ `\operatorname{gr} A \to A`.
153
+
154
+ This is an isomorphism of `R`-modules, not of algebras. See
155
+ the class documentation :class:`AssociatedGradedAlgebra`.
156
+
157
+ .. SEEALSO::
158
+
159
+ :meth:`to_graded_conversion`
160
+
161
+ EXAMPLES::
162
+
163
+ sage: A = Algebras(QQ).WithBasis().Filtered().example()
164
+ sage: p = A.an_element() + A.algebra_generators()['x'] + 2; p
165
+ U['x']^2*U['y']^2*U['z']^3 + 3*U['x'] + 3*U['y'] + 3
166
+ sage: q = A.to_graded_conversion()(p) # needs sage.combinat
167
+ sage: A.from_graded_conversion()(q) == p # needs sage.combinat
168
+ True
169
+ sage: q.parent() is A.graded_algebra() # needs sage.combinat
170
+ True
171
+ """
172
+ base_one = self.base_ring().one()
173
+ return self.graded_algebra().module_morphism(diagonal=lambda x: base_one,
174
+ codomain=self)
175
+
176
+ def projection(self, i):
177
+ r"""
178
+ Return the `i`-th projection `p_i : F_i \to G_i` (in the
179
+ notations of the class documentation
180
+ :class:`AssociatedGradedAlgebra`, where `A = ` ``self``).
181
+
182
+ This method actually does not return the map `p_i` itself,
183
+ but an extension of `p_i` to the whole `R`-module `A`.
184
+ This extension is the composition of the `R`-module
185
+ isomorphism `A \to \operatorname{gr} A` with the canonical
186
+ projection of the graded `R`-module `\operatorname{gr} A`
187
+ onto its `i`-th graded component `G_i`. The codomain of
188
+ this map is `\operatorname{gr} A`, although its actual
189
+ image is `G_i`. The map `p_i` is obtained from this map
190
+ by restricting its domain to `F_i` and its image to `G_i`.
191
+
192
+ EXAMPLES::
193
+
194
+ sage: A = Algebras(QQ).WithBasis().Filtered().example()
195
+ sage: p = A.an_element() + A.algebra_generators()['x'] + 2; p
196
+ U['x']^2*U['y']^2*U['z']^3 + 3*U['x'] + 3*U['y'] + 3
197
+ sage: q = A.projection(7)(p); q # needs sage.combinat
198
+ bar(U['x']^2*U['y']^2*U['z']^3)
199
+ sage: q.parent() is A.graded_algebra() # needs sage.combinat
200
+ True
201
+ sage: A.projection(8)(p) # needs sage.combinat
202
+ 0
203
+ """
204
+ base_zero = self.base_ring().zero()
205
+ base_one = self.base_ring().one()
206
+ grA = self.graded_algebra()
207
+ proj = lambda x: (base_one if self.degree_on_basis(x) == i
208
+ else base_zero)
209
+ return self.module_morphism(diagonal=proj, codomain=grA)
210
+
211
+ def induced_graded_map(self, other, f):
212
+ r"""
213
+ Return the graded linear map between the associated graded
214
+ algebras of ``self`` and ``other`` canonically induced by
215
+ the filtration-preserving map ``f : self -> other``.
216
+
217
+ Let `A` and `B` be two filtered algebras with basis, and let
218
+ `(F_i)_{i \in I}` and `(G_i)_{i \in I}` be their
219
+ filtrations. Let `f : A \to B` be a linear map which
220
+ preserves the filtration (i.e., satisfies `f(F_i) \subseteq
221
+ G_i` for all `i \in I`). Then, there is a canonically
222
+ defined graded linear map
223
+ `\operatorname{gr} f : \operatorname{gr} A \to
224
+ \operatorname{gr} B` which satisfies
225
+
226
+ .. MATH::
227
+
228
+ (\operatorname{gr} f) (p_i(a)) = p_i(f(a))
229
+ \qquad \text{for all } i \in I \text{ and } a \in F_i ,
230
+
231
+ where the `p_i` on the left hand side is the canonical
232
+ projection from `F_i` onto the `i`-th graded component
233
+ of `\operatorname{gr} A`, while the `p_i` on the right
234
+ hand side is the canonical projection from `G_i` onto
235
+ the `i`-th graded component of `\operatorname{gr} B`.
236
+
237
+ INPUT:
238
+
239
+ - ``other`` -- a filtered algebra with basis
240
+
241
+ - ``f`` -- a filtration-preserving linear map from ``self``
242
+ to ``other`` (can be given as a morphism or as a function)
243
+
244
+ OUTPUT: the graded linear map `\operatorname{gr} f`
245
+
246
+ EXAMPLES:
247
+
248
+ **Example 1.**
249
+
250
+ We start with the universal enveloping algebra of the
251
+ Lie algebra `\RR^3` (with the cross product serving as
252
+ Lie bracket)::
253
+
254
+ sage: A = AlgebrasWithBasis(QQ).Filtered().example(); A
255
+ An example of a filtered algebra with basis: the
256
+ universal enveloping algebra of Lie algebra of RR^3
257
+ with cross product over Rational Field
258
+ sage: M = A.indices(); M
259
+ Free abelian monoid indexed by {'x', 'y', 'z'}
260
+ sage: x,y,z = [A.basis()[M.gens()[i]] for i in "xyz"]
261
+
262
+ Let us define a stupid filtered map from ``A`` to
263
+ itself::
264
+
265
+ sage: def map_on_basis(m):
266
+ ....: d = m.dict()
267
+ ....: i = d.get('x', 0); j = d.get('y', 0); k = d.get('z', 0)
268
+ ....: g = (y ** (i+j)) * (z ** k)
269
+ ....: if i > 0:
270
+ ....: g += i * (x ** (i-1)) * (y ** j) * (z ** k)
271
+ ....: return g
272
+ sage: f = A.module_morphism(on_basis=map_on_basis,
273
+ ....: codomain=A)
274
+ sage: f(x)
275
+ U['y'] + 1
276
+ sage: f(x*y*z)
277
+ U['y']^2*U['z'] + U['y']*U['z']
278
+ sage: f(x*x*y*z)
279
+ U['y']^3*U['z'] + 2*U['x']*U['y']*U['z']
280
+ sage: f(A.one())
281
+ 1
282
+ sage: f(y*z)
283
+ U['y']*U['z']
284
+
285
+ (There is nothing here that is peculiar to this
286
+ universal enveloping algebra; we are only using its
287
+ module structure, and we could just as well be using
288
+ a polynomial algebra in its stead.)
289
+
290
+ We now compute `\operatorname{gr} f` ::
291
+
292
+ sage: # needs sage.combinat
293
+ sage: grA = A.graded_algebra(); grA
294
+ Graded Algebra of An example of a filtered algebra with
295
+ basis: the universal enveloping algebra of Lie algebra
296
+ of RR^3 with cross product over Rational Field
297
+ sage: xx, yy, zz = [A.to_graded_conversion()(i) for i in [x, y, z]]
298
+ sage: xx+yy*zz
299
+ bar(U['y']*U['z']) + bar(U['x'])
300
+ sage: grf = A.induced_graded_map(A, f); grf
301
+ Generic endomorphism of Graded Algebra of An example
302
+ of a filtered algebra with basis: the universal
303
+ enveloping algebra of Lie algebra of RR^3 with cross
304
+ product over Rational Field
305
+ sage: grf(xx)
306
+ bar(U['y'])
307
+ sage: grf(xx*yy*zz)
308
+ bar(U['y']^2*U['z'])
309
+ sage: grf(xx*xx*yy*zz)
310
+ bar(U['y']^3*U['z'])
311
+ sage: grf(grA.one())
312
+ bar(1)
313
+ sage: grf(yy*zz)
314
+ bar(U['y']*U['z'])
315
+ sage: grf(yy*zz-2*yy)
316
+ bar(U['y']*U['z']) - 2*bar(U['y'])
317
+
318
+ **Example 2.**
319
+
320
+ We shall now construct `\operatorname{gr} f` for a
321
+ different map `f` out of the same ``A``; the new map
322
+ `f` will lead into a graded algebra already, namely into
323
+ the algebra of symmetric functions::
324
+
325
+ sage: # needs sage.combinat sage.modules
326
+ sage: h = SymmetricFunctions(QQ).h()
327
+ sage: def map_on_basis(m): # redefining map_on_basis
328
+ ....: d = m.dict()
329
+ ....: i = d.get('x', 0); j = d.get('y', 0); k = d.get('z', 0)
330
+ ....: g = (h[1] ** i) * (h[2] ** (j // 2) * (h[3] ** (k // 3)))
331
+ ....: g += i * (h[1] ** (i+j+k))
332
+ ....: return g
333
+ sage: f = A.module_morphism(on_basis=map_on_basis,
334
+ ....: codomain=h) # redefining f
335
+ sage: f(x)
336
+ 2*h[1]
337
+ sage: f(y)
338
+ h[]
339
+ sage: f(z)
340
+ h[]
341
+ sage: f(y**2)
342
+ h[2]
343
+ sage: f(x**2)
344
+ 3*h[1, 1]
345
+ sage: f(x*y*z)
346
+ h[1] + h[1, 1, 1]
347
+ sage: f(x*x*y*y*z)
348
+ 2*h[1, 1, 1, 1, 1] + h[2, 1, 1]
349
+ sage: f(A.one())
350
+ h[]
351
+
352
+ The algebra ``h`` of symmetric functions in the `h`-basis
353
+ is already graded, so its associated graded algebra is
354
+ implemented as itself::
355
+
356
+ sage: # needs sage.combinat sage.modules
357
+ sage: grh = h.graded_algebra(); grh is h
358
+ True
359
+ sage: grf = A.induced_graded_map(h, f); grf
360
+ Generic morphism:
361
+ From: Graded Algebra of An example of a filtered
362
+ algebra with basis: the universal enveloping
363
+ algebra of Lie algebra of RR^3 with cross
364
+ product over Rational Field
365
+ To: Symmetric Functions over Rational Field
366
+ in the homogeneous basis
367
+ sage: grf(xx)
368
+ 2*h[1]
369
+ sage: grf(yy)
370
+ 0
371
+ sage: grf(zz)
372
+ 0
373
+ sage: grf(yy**2)
374
+ h[2]
375
+ sage: grf(xx**2)
376
+ 3*h[1, 1]
377
+ sage: grf(xx*yy*zz)
378
+ h[1, 1, 1]
379
+ sage: grf(xx*xx*yy*yy*zz)
380
+ 2*h[1, 1, 1, 1, 1]
381
+ sage: grf(grA.one())
382
+ h[]
383
+
384
+ **Example 3.**
385
+
386
+ After having had a graded algebra as the codomain, let us try to
387
+ have one as the domain instead. Our new ``f`` will go from ``h``
388
+ to ``A``::
389
+
390
+ sage: # needs sage.combinat sage.modules
391
+ sage: def map_on_basis(lam): # redefining map_on_basis
392
+ ....: return x ** (sum(lam)) + y ** (len(lam))
393
+ sage: f = h.module_morphism(on_basis=map_on_basis,
394
+ ....: codomain=A) # redefining f
395
+ sage: f(h[1])
396
+ U['x'] + U['y']
397
+ sage: f(h[2])
398
+ U['x']^2 + U['y']
399
+ sage: f(h[1, 1])
400
+ U['x']^2 + U['y']^2
401
+ sage: f(h[2, 2])
402
+ U['x']^4 + U['y']^2
403
+ sage: f(h[3, 2, 1])
404
+ U['x']^6 + U['y']^3
405
+ sage: f(h.one())
406
+ 2
407
+ sage: grf = h.induced_graded_map(A, f); grf
408
+ Generic morphism:
409
+ From: Symmetric Functions over Rational Field
410
+ in the homogeneous basis
411
+ To: Graded Algebra of An example of a filtered
412
+ algebra with basis: the universal enveloping
413
+ algebra of Lie algebra of RR^3 with cross
414
+ product over Rational Field
415
+ sage: grf(h[1])
416
+ bar(U['x']) + bar(U['y'])
417
+ sage: grf(h[2])
418
+ bar(U['x']^2)
419
+ sage: grf(h[1, 1])
420
+ bar(U['x']^2) + bar(U['y']^2)
421
+ sage: grf(h[2, 2])
422
+ bar(U['x']^4)
423
+ sage: grf(h[3, 2, 1])
424
+ bar(U['x']^6)
425
+ sage: grf(h.one())
426
+ 2*bar(1)
427
+
428
+ **Example 4.**
429
+
430
+ The construct `\operatorname{gr} f` also makes sense when `f`
431
+ is a filtration-preserving map between graded algebras. ::
432
+
433
+ sage: # needs sage.combinat sage.modules
434
+ sage: def map_on_basis(lam): # redefining map_on_basis
435
+ ....: return h[lam] + h[len(lam)]
436
+ sage: f = h.module_morphism(on_basis=map_on_basis,
437
+ ....: codomain=h) # redefining f
438
+ sage: f(h[1])
439
+ 2*h[1]
440
+ sage: f(h[2])
441
+ h[1] + h[2]
442
+ sage: f(h[1, 1])
443
+ h[1, 1] + h[2]
444
+ sage: f(h[2, 1])
445
+ h[2] + h[2, 1]
446
+ sage: f(h.one())
447
+ 2*h[]
448
+ sage: grf = h.induced_graded_map(h, f); grf
449
+ Generic endomorphism of Symmetric Functions over Rational
450
+ Field in the homogeneous basis
451
+ sage: grf(h[1])
452
+ 2*h[1]
453
+ sage: grf(h[2])
454
+ h[2]
455
+ sage: grf(h[1, 1])
456
+ h[1, 1] + h[2]
457
+ sage: grf(h[2, 1])
458
+ h[2, 1]
459
+ sage: grf(h.one())
460
+ 2*h[]
461
+
462
+ **Example 5.**
463
+
464
+ For another example, let us compute `\operatorname{gr} f` for a
465
+ map `f` between two Clifford algebras::
466
+
467
+ sage: # needs sage.modules
468
+ sage: Q = QuadraticForm(ZZ, 2, [1,2,3])
469
+ sage: B = CliffordAlgebra(Q, names=['u','v']); B
470
+ The Clifford algebra of the Quadratic form in 2
471
+ variables over Integer Ring with coefficients:
472
+ [ 1 2 ]
473
+ [ * 3 ]
474
+ sage: m = Matrix(ZZ, [[1, 2], [1, -1]])
475
+ sage: f = B.lift_module_morphism(m, names=['x','y'])
476
+ sage: A = f.domain(); A
477
+ The Clifford algebra of the Quadratic form in 2
478
+ variables over Integer Ring with coefficients:
479
+ [ 6 0 ]
480
+ [ * 3 ]
481
+ sage: x, y = A.gens()
482
+ sage: f(x)
483
+ u + v
484
+ sage: f(y)
485
+ 2*u - v
486
+ sage: f(x**2)
487
+ 6
488
+ sage: f(x*y)
489
+ -3*u*v + 3
490
+ sage: grA = A.graded_algebra(); grA
491
+ The exterior algebra of rank 2 over Integer Ring
492
+ sage: A.to_graded_conversion()(x)
493
+ x
494
+ sage: A.to_graded_conversion()(y)
495
+ y
496
+ sage: A.to_graded_conversion()(x*y)
497
+ x*y
498
+ sage: u = A.to_graded_conversion()(x*y+1); u
499
+ x*y + 1
500
+ sage: A.from_graded_conversion()(u)
501
+ x*y + 1
502
+ sage: A.projection(2)(x*y+1)
503
+ x*y
504
+ sage: A.projection(1)(x+2*y-2)
505
+ x + 2*y
506
+ sage: grf = A.induced_graded_map(B, f); grf
507
+ Generic morphism:
508
+ From: The exterior algebra of rank 2 over Integer Ring
509
+ To: The exterior algebra of rank 2 over Integer Ring
510
+ sage: grf(A.to_graded_conversion()(x))
511
+ u + v
512
+ sage: grf(A.to_graded_conversion()(y))
513
+ 2*u - v
514
+ sage: grf(A.to_graded_conversion()(x**2))
515
+ 6
516
+ sage: grf(A.to_graded_conversion()(x*y))
517
+ -3*u*v
518
+ sage: grf(grA.one())
519
+ 1
520
+ """
521
+ grA = self.graded_algebra()
522
+ grB = other.graded_algebra()
523
+ from sage.categories.graded_modules_with_basis import GradedModulesWithBasis
524
+ cat = GradedModulesWithBasis(self.base_ring())
525
+ from_gr = self.from_graded_conversion()
526
+
527
+ def on_basis(m):
528
+ i = grA.degree_on_basis(m)
529
+ lifted_img_of_m = f(from_gr(grA.monomial(m)))
530
+ return other.projection(i)(lifted_img_of_m)
531
+ return grA.module_morphism(on_basis=on_basis,
532
+ codomain=grB, category=cat)
533
+ # If we could assume that the projection of the basis
534
+ # element of ``self`` indexed by an index ``m`` is the
535
+ # basis element of ``grA`` indexed by ``m``, then this
536
+ # could go faster:
537
+ #
538
+ # def on_basis(m):
539
+ # i = grA.degree_on_basis(m)
540
+ # return grB.projection(i)(f(self.monomial(m)))
541
+ # return grA.module_morphism(on_basis=on_basis,
542
+ # codomain=grB, category=cat)
543
+ #
544
+ # But this assumption might come back to bite us in the
545
+ # ass one day. What do you think?
546
+
547
+ class ElementMethods:
548
+ pass