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,91 @@
1
+ # sage_setup: distribution = sagemath-categories
2
+ r"""
3
+ Graded Lie Algebras
4
+
5
+ AUTHORS:
6
+
7
+ - Eero Hakavuori (2018-08-16): initial version
8
+ """
9
+
10
+ # ****************************************************************************
11
+ # Copyright (C) 2018 Eero Hakavuori <eero.hakavuori@gmail.com>
12
+ #
13
+ # This program is free software: you can redistribute it and/or modify
14
+ # it under the terms of the GNU General Public License as published by
15
+ # the Free Software Foundation, either version 2 of the License, or
16
+ # (at your option) any later version.
17
+ # https://www.gnu.org/licenses/
18
+ # ****************************************************************************
19
+
20
+ from sage.categories.category_with_axiom import CategoryWithAxiom_over_base_ring
21
+ from sage.categories.graded_modules import GradedModulesCategory
22
+
23
+
24
+ class GradedLieAlgebras(GradedModulesCategory):
25
+ r"""
26
+ Category of graded Lie algebras.
27
+
28
+ TESTS::
29
+
30
+ sage: C = LieAlgebras(QQ).Graded()
31
+ sage: TestSuite(C).run()
32
+ """
33
+ class SubcategoryMethods:
34
+ def Stratified(self):
35
+ r"""
36
+ Return the full subcategory of stratified objects of ``self``.
37
+
38
+ A Lie algebra is stratified if it is graded and generated as a
39
+ Lie algebra by its component of degree one.
40
+
41
+ EXAMPLES::
42
+
43
+ sage: LieAlgebras(QQ).Graded().Stratified()
44
+ Category of stratified Lie algebras over Rational Field
45
+ """
46
+ return self._with_axiom("Stratified")
47
+
48
+ class Stratified(CategoryWithAxiom_over_base_ring):
49
+ r"""
50
+ Category of stratified Lie algebras.
51
+
52
+ A graded Lie algebra `L = \bigoplus_{k=1}^M L_k` (where
53
+ possibly `M = \infty`) is called *stratified* if it is generated
54
+ by `L_1`; in other words, we have `L_{k+1} = [L_1, L_k]`.
55
+
56
+ TESTS::
57
+
58
+ sage: C = LieAlgebras(QQ).Graded().Stratified()
59
+ sage: TestSuite(C).run()
60
+ """
61
+ class FiniteDimensional(CategoryWithAxiom_over_base_ring):
62
+ r"""
63
+ Category of finite dimensional stratified Lie algebras.
64
+
65
+ EXAMPLES::
66
+
67
+ sage: LieAlgebras(QQ).Graded().Stratified().FiniteDimensional()
68
+ Category of finite dimensional stratified Lie algebras over Rational Field
69
+
70
+ TESTS::
71
+
72
+ sage: C = LieAlgebras(QQ).Graded().Stratified().FiniteDimensional()
73
+ sage: TestSuite(C).run()
74
+ """
75
+ def extra_super_categories(self):
76
+ """
77
+ Implement the fact that a finite dimensional stratified Lie
78
+ algebra is nilpotent.
79
+
80
+ EXAMPLES::
81
+
82
+ sage: C = LieAlgebras(QQ).Graded().Stratified().FiniteDimensional()
83
+ sage: C.extra_super_categories()
84
+ [Category of nilpotent Lie algebras over Rational Field]
85
+ sage: C is C.Nilpotent()
86
+ True
87
+ sage: C.is_subcategory(LieAlgebras(QQ).Nilpotent())
88
+ True
89
+ """
90
+ from sage.categories.lie_algebras import LieAlgebras
91
+ return [LieAlgebras(self.base_ring()).Nilpotent()]
@@ -0,0 +1,44 @@
1
+ # sage_setup: distribution = sagemath-categories
2
+ r"""
3
+ Graded Lie Algebras With Basis
4
+ """
5
+
6
+ # ****************************************************************************
7
+ # Copyright (C) 2018 Travis Scrimshaw <tcscrims at gmail.com>
8
+ #
9
+ # This program is free software: you can redistribute it and/or modify
10
+ # it under the terms of the GNU General Public License as published by
11
+ # the Free Software Foundation, either version 2 of the License, or
12
+ # (at your option) any later version.
13
+ # https://www.gnu.org/licenses/
14
+ # ****************************************************************************
15
+
16
+ from sage.categories.graded_modules import GradedModulesCategory
17
+ from sage.misc.lazy_import import LazyImport
18
+
19
+
20
+ class GradedLieAlgebrasWithBasis(GradedModulesCategory):
21
+ """
22
+ The category of graded Lie algebras with a distinguished basis.
23
+
24
+ EXAMPLES::
25
+
26
+ sage: C = LieAlgebras(ZZ).WithBasis().Graded(); C
27
+ Category of graded Lie algebras with basis over Integer Ring
28
+ sage: C.super_categories()
29
+ [Category of graded modules with basis over Integer Ring,
30
+ Category of Lie algebras with basis over Integer Ring,
31
+ Category of graded Lie algebras over Integer Ring]
32
+
33
+ sage: C is LieAlgebras(ZZ).WithBasis().Graded()
34
+ True
35
+ sage: C is LieAlgebras(ZZ).Graded().WithBasis()
36
+ False
37
+
38
+ TESTS::
39
+
40
+ sage: TestSuite(C).run()
41
+ """
42
+ FiniteDimensional = LazyImport('sage.categories.finite_dimensional_graded_lie_algebras_with_basis',
43
+ 'FiniteDimensionalGradedLieAlgebrasWithBasis',
44
+ as_name='FiniteDimensional')
@@ -0,0 +1,74 @@
1
+ # sage_setup: distribution = sagemath-categories
2
+ """
3
+ Graded Lie Conformal Algebras
4
+
5
+ AUTHORS:
6
+
7
+ - Reimundo Heluani (2019-10-05): Initial implementation.
8
+ """
9
+
10
+ #******************************************************************************
11
+ # Copyright (C) 2019 Reimundo Heluani <heluani@potuz.net>
12
+ #
13
+ # This program is free software: you can redistribute it and/or modify
14
+ # it under the terms of the GNU General Public License as published by
15
+ # the Free Software Foundation, either version 2 of the License, or
16
+ # (at your option) any later version.
17
+ # http://www.gnu.org/licenses/
18
+ #*****************************************************************************
19
+
20
+ from sage.categories.graded_modules import GradedModulesCategory
21
+ from sage.misc.cachefunc import cached_method
22
+
23
+
24
+ class GradedLieConformalAlgebrasCategory(GradedModulesCategory):
25
+ @cached_method
26
+ def Super(self, base_ring=None):
27
+ r"""
28
+ Return the super-analogue category of ``self``.
29
+
30
+ INPUT:
31
+
32
+ - ``base_ring`` -- this is ignored
33
+
34
+ EXAMPLES::
35
+
36
+ sage: # needs sage.rings.number_field
37
+ sage: C = LieConformalAlgebras(QQbar)
38
+ sage: C.Graded().Super() is C.Super().Graded()
39
+ True
40
+ sage: Cp = C.WithBasis()
41
+ sage: Cp.Graded().Super() is Cp.Super().Graded()
42
+ True
43
+ """
44
+ return self.base_category().Super(base_ring).Graded()
45
+
46
+ def _repr_object_names(self):
47
+ """
48
+ The names of the objects of ``self``.
49
+
50
+ EXAMPLES::
51
+
52
+ sage: LieConformalAlgebras(QQbar).Graded() # needs sage.rings.number_field
53
+ Category of H-graded Lie conformal algebras over Algebraic Field
54
+
55
+ sage: LieConformalAlgebras(QQbar).WithBasis().FinitelyGenerated().Graded() # needs sage.rings.number_field
56
+ Category of H-graded finitely generated Lie conformal algebras with basis over Algebraic Field
57
+ """
58
+ return "H-graded {}".format(self.base_category()._repr_object_names())
59
+
60
+
61
+ class GradedLieConformalAlgebras(GradedLieConformalAlgebrasCategory):
62
+ """
63
+ The category of graded Lie conformal algebras.
64
+
65
+ EXAMPLES::
66
+
67
+ sage: C = LieConformalAlgebras(QQbar).Graded(); C # needs sage.rings.number_field
68
+ Category of H-graded Lie conformal algebras over Algebraic Field
69
+
70
+ sage: CS = LieConformalAlgebras(QQ).Graded().Super(); CS
71
+ Category of H-graded super Lie conformal algebras over Rational Field
72
+ sage: CS is LieConformalAlgebras(QQ).Super().Graded()
73
+ True
74
+ """
@@ -0,0 +1,133 @@
1
+ # sage_setup: distribution = sagemath-categories
2
+ r"""
3
+ Graded modules
4
+ """
5
+ # ****************************************************************************
6
+ # Copyright (C) 2008 Teresa Gomez-Diaz (CNRS) <Teresa.Gomez-Diaz@univ-mlv.fr>
7
+ # 2008-2013 Nicolas M. Thiery <nthiery at users.sf.net>
8
+ #
9
+ # Distributed under the terms of the GNU General Public License (GPL)
10
+ # https://www.gnu.org/licenses/
11
+ # *****************************************************************************
12
+
13
+ from sage.categories.category import Category
14
+ from sage.categories.category_types import Category_over_base_ring
15
+ from sage.categories.covariant_functorial_construction import RegressiveCovariantConstructionCategory
16
+
17
+
18
+ class GradedModulesCategory(RegressiveCovariantConstructionCategory, Category_over_base_ring):
19
+ def __init__(self, base_category):
20
+ """
21
+ EXAMPLES::
22
+
23
+ sage: C = GradedAlgebras(QQ)
24
+ sage: C
25
+ Category of graded algebras over Rational Field
26
+ sage: C.base_category()
27
+ Category of algebras over Rational Field
28
+ sage: sorted(C.super_categories(), key=str)
29
+ [Category of filtered algebras over Rational Field,
30
+ Category of graded vector spaces over Rational Field]
31
+
32
+ sage: AlgebrasWithBasis(QQ).Graded().base_ring()
33
+ Rational Field
34
+ sage: GradedHopfAlgebrasWithBasis(QQ).base_ring()
35
+ Rational Field
36
+
37
+ TESTS::
38
+
39
+ sage: GradedModules(ZZ)
40
+ Category of graded modules over Integer Ring
41
+ sage: Modules(ZZ).Graded()
42
+ Category of graded modules over Integer Ring
43
+ sage: GradedModules(ZZ) is Modules(ZZ).Graded()
44
+ True
45
+ """
46
+ super().__init__(base_category, base_category.base_ring())
47
+
48
+ _functor_category = "Graded"
49
+
50
+ def _repr_object_names(self):
51
+ """
52
+ EXAMPLES::
53
+
54
+ sage: AlgebrasWithBasis(QQ).Graded() # indirect doctest
55
+ Category of graded algebras with basis over Rational Field
56
+ """
57
+ return "graded {}".format(self.base_category()._repr_object_names())
58
+
59
+ @classmethod
60
+ def default_super_categories(cls, category, *args):
61
+ r"""
62
+ Return the default super categories of ``category.Graded()``.
63
+
64
+ Mathematical meaning: every graded object (module, algebra,
65
+ etc.) is a filtered object with the (implicit) filtration
66
+ defined by `F_i = \bigoplus_{j \leq i} G_j`.
67
+
68
+ INPUT:
69
+
70
+ - ``cls`` -- the class ``GradedModulesCategory``
71
+ - ``category`` -- a category
72
+
73
+ OUTPUT: a (join) category
74
+
75
+ In practice, this returns ``category.Filtered()``, joined
76
+ together with the result of the method
77
+ :meth:`RegressiveCovariantConstructionCategory.default_super_categories() <sage.categories.covariant_functorial_construction.RegressiveCovariantConstructionCategory.default_super_categories>`
78
+ (that is the join of ``category.Filtered()`` and ``cat`` for
79
+ each ``cat`` in the super categories of ``category``).
80
+
81
+ EXAMPLES:
82
+
83
+ Consider ``category=Algebras()``, which has ``cat=Modules()``
84
+ as super category. Then, a grading of an algebra `G`
85
+ is also a filtration of `G`::
86
+
87
+ sage: Algebras(QQ).Graded().super_categories()
88
+ [Category of filtered algebras over Rational Field,
89
+ Category of graded vector spaces over Rational Field]
90
+
91
+ This resulted from the following call::
92
+
93
+ sage: sage.categories.graded_modules.GradedModulesCategory.default_super_categories(Algebras(QQ))
94
+ Join of Category of filtered algebras over Rational Field
95
+ and Category of graded vector spaces over Rational Field
96
+ """
97
+ cat = super().default_super_categories(category, *args)
98
+ return Category.join([category.Filtered(), cat])
99
+
100
+
101
+ class GradedModules(GradedModulesCategory):
102
+ r"""
103
+ The category of graded modules.
104
+
105
+ We consider every graded module `M = \bigoplus_i M_i` as a
106
+ filtered module under the (natural) filtration given by
107
+
108
+ .. MATH::
109
+
110
+ F_i = \bigoplus_{j < i} M_j.
111
+
112
+ EXAMPLES::
113
+
114
+ sage: GradedModules(ZZ)
115
+ Category of graded modules over Integer Ring
116
+ sage: GradedModules(ZZ).super_categories()
117
+ [Category of filtered modules over Integer Ring]
118
+
119
+ The category of graded modules defines the graded structure which
120
+ shall be preserved by morphisms::
121
+
122
+ sage: Modules(ZZ).Graded().additional_structure()
123
+ Category of graded modules over Integer Ring
124
+
125
+ TESTS::
126
+
127
+ sage: TestSuite(GradedModules(ZZ)).run()
128
+ """
129
+ class ParentMethods:
130
+ pass
131
+
132
+ class ElementMethods:
133
+ pass
@@ -0,0 +1,329 @@
1
+ # sage_setup: distribution = sagemath-categories
2
+ r"""
3
+ Graded modules with basis
4
+ """
5
+ #*****************************************************************************
6
+ # Copyright (C) 2008 Teresa Gomez-Diaz (CNRS) <Teresa.Gomez-Diaz@univ-mlv.fr>
7
+ # 2008-2011 Nicolas M. Thiery <nthiery at users.sf.net>
8
+ #
9
+ # Distributed under the terms of the GNU General Public License (GPL)
10
+ # http://www.gnu.org/licenses/
11
+ #******************************************************************************
12
+
13
+ from sage.categories.graded_modules import GradedModulesCategory
14
+ from sage.categories.quotients import QuotientsCategory
15
+
16
+
17
+ class GradedModulesWithBasis(GradedModulesCategory):
18
+ """
19
+ The category of graded modules with a distinguished basis.
20
+
21
+ EXAMPLES::
22
+
23
+ sage: C = GradedModulesWithBasis(ZZ); C
24
+ Category of graded modules with basis over Integer Ring
25
+ sage: sorted(C.super_categories(), key=str)
26
+ [Category of filtered modules with basis over Integer Ring,
27
+ Category of graded modules over Integer Ring]
28
+ sage: C is ModulesWithBasis(ZZ).Graded()
29
+ True
30
+
31
+ TESTS::
32
+
33
+ sage: TestSuite(C).run()
34
+ """
35
+ class ParentMethods:
36
+ def degree_negation(self, element):
37
+ r"""
38
+ Return the image of ``element`` under the degree negation
39
+ automorphism of the graded module ``self``.
40
+
41
+ The degree negation is the module automorphism which scales
42
+ every homogeneous element of degree `k` by `(-1)^k` (for all
43
+ `k`). This assumes that the module ``self`` is `\ZZ`-graded.
44
+
45
+ INPUT:
46
+
47
+ - ``element`` -- element of the module ``self``
48
+
49
+ EXAMPLES::
50
+
51
+ sage: E.<a,b> = ExteriorAlgebra(QQ) # needs sage.modules
52
+ sage: E.degree_negation((1 + a) * (1 + b)) # needs sage.modules
53
+ a*b - a - b + 1
54
+ sage: E.degree_negation(E.zero()) # needs sage.modules
55
+ 0
56
+
57
+ sage: P = GradedModulesWithBasis(ZZ).example(); P # needs sage.modules
58
+ An example of a graded module with basis:
59
+ the free module on partitions over Integer Ring
60
+ sage: pbp = lambda x: P.basis()[Partition(list(x))]
61
+ sage: p = pbp([3,1]) - 2 * pbp([2]) + 4 * pbp([1]) # needs sage.modules
62
+ sage: P.degree_negation(p) # needs sage.modules
63
+ -4*P[1] - 2*P[2] + P[3, 1]
64
+ """
65
+ base_one = self.base_ring().one()
66
+ base_minusone = - base_one
67
+ diag = lambda x: (base_one if self.degree_on_basis(x) % 2 == 0
68
+ else base_minusone)
69
+ return self.sum_of_terms([(key, diag(key) * value)
70
+ for key, value in
71
+ element.monomial_coefficients(copy=False).items()])
72
+
73
+ def submodule(self, gens, check=True, already_echelonized=False,
74
+ unitriangular=False, support_order=None, category=None,
75
+ *args, **opts):
76
+ r"""
77
+ Return the submodule spanned by a finite set of elements.
78
+
79
+ INPUT:
80
+
81
+ - ``gens`` -- list or family of elements of ``self``
82
+ - ``check`` -- boolean (default: ``True``); whether to verify that
83
+ the elements of ``gens`` are in ``self``
84
+ - ``already_echelonized`` -- boolean (default: ``False``); whether
85
+ the elements of ``gens`` are already in (not necessarily
86
+ reduced) echelon form
87
+ - ``unitriangular`` -- boolean (default: ``False``); whether
88
+ the lift morphism is unitriangular
89
+ - ``support_order`` -- (optional) either something that can
90
+ be converted into a tuple or a key function
91
+ - ``category`` -- (optional) the category of the submodule
92
+
93
+ If ``already_echelonized`` is ``False``, then the
94
+ generators are put in reduced echelon form using
95
+ :meth:`echelonize`, and reindexed by `0,1,...`.
96
+
97
+ .. WARNING::
98
+
99
+ At this point, this method only works for finite
100
+ dimensional submodules and if matrices can be
101
+ echelonized over the base ring.
102
+
103
+ If in addition ``unitriangular`` is ``True``, then
104
+ the generators are made such that the coefficients of
105
+ the pivots are 1, so that lifting map is unitriangular.
106
+
107
+ The basis of the submodule uses the same index set as the
108
+ generators, and the lifting map sends `y_i` to `gens[i]`.
109
+
110
+ .. SEEALSO::
111
+
112
+ - :meth:`ModulesWithBasis.FiniteDimensional.ParentMethods.quotient_module`
113
+ - :class:`sage.modules.with_basis.subquotient.SubmoduleWithBasis`
114
+
115
+ EXAMPLES:
116
+
117
+ A graded submodule of a graded module generated by homogeneous
118
+ elements is naturally graded::
119
+
120
+ sage: # needs sage.combinat sage.modules
121
+ sage: E.<x,y,z> = ExteriorAlgebra(QQ)
122
+ sage: S = E.submodule([x + y, x*y - y*z])
123
+ sage: S.category()
124
+ Join of
125
+ Category of graded vector spaces with basis over Rational Field and
126
+ Category of subobjects of filtered modules with basis over Rational Field and
127
+ Category of finite dimensional filtered modules with basis over Rational Field
128
+ sage: S.basis()[0].degree()
129
+ 1
130
+ sage: S.basis()[1].degree()
131
+ 2
132
+
133
+ We check on the echelonized basis::
134
+
135
+ sage: Sp = E.submodule([1, x + y + 5, x*y - y*z + x + y - 2]) # needs sage.combinat sage.modules
136
+ sage: Sp.category() # needs sage.combinat sage.modules
137
+ Join of
138
+ Category of graded vector spaces with basis over Rational Field and
139
+ Category of subobjects of filtered modules with basis over Rational Field and
140
+ Category of finite dimensional filtered modules with basis over Rational Field
141
+
142
+ If it is generated by inhomogeneous elements, then it is
143
+ filtered by default::
144
+
145
+ sage: F = E.submodule([x + y*z, x*z + y*x]) # needs sage.combinat sage.modules
146
+ sage: F.category() # needs sage.combinat sage.modules
147
+ Join of
148
+ Category of subobjects of filtered modules with basis over Rational Field and
149
+ Category of finite dimensional filtered modules with basis over Rational Field and
150
+ Category of filtered vector spaces with basis over Rational Field
151
+
152
+ If ``category`` is specified, then it does not give any extra
153
+ structure to the submodule (we can think of this as applying
154
+ the forgetful functor)::
155
+
156
+ sage: # needs sage.combinat sage.modules
157
+ sage: SM = E.submodule([x + y, x*y - y*z],
158
+ ....: category=ModulesWithBasis(QQ))
159
+ sage: SM.category()
160
+ Join of
161
+ Category of finite dimensional vector spaces with basis over Rational Field and
162
+ Category of subobjects of sets
163
+ sage: FM = E.submodule([x + 1, x*y - x*y*z],
164
+ ....: category=ModulesWithBasis(QQ))
165
+ sage: FM.category()
166
+ Join of
167
+ Category of finite dimensional vector spaces with basis over Rational Field and
168
+ Category of subobjects of sets
169
+
170
+ If we have specified that this is a graded submodule of a graded
171
+ module, then the echelonized elements must be homogeneous::
172
+
173
+ sage: Cat = ModulesWithBasis(QQ).Graded().Subobjects()
174
+ sage: E.submodule([x + y, x*y - 1], category=Cat) # needs sage.combinat sage.modules
175
+ Traceback (most recent call last):
176
+ ...
177
+ ValueError: all of the generators must be homogeneous
178
+ sage: E.submodule([x + y, x*y - x - y], category=Cat) # needs sage.combinat sage.modules
179
+ Free module generated by {0, 1} over Rational Field
180
+ """
181
+ # Make sure gens consists of elements of ``self``
182
+ from sage.sets.family import Family, AbstractFamily
183
+ if isinstance(gens, AbstractFamily):
184
+ gens = gens.map(self)
185
+ elif isinstance(gens, dict):
186
+ gens = Family(gens.keys(), gens.__getitem__)
187
+ else:
188
+ gens = [self(y) for y in gens]
189
+ support_order = self._compute_support_order(gens, support_order)
190
+ if not already_echelonized:
191
+ gens = self.echelon_form(gens, unitriangular, order=support_order)
192
+
193
+ GMod = GradedModulesWithBasis(self.category().base_ring())
194
+ if category is None:
195
+ if all(g.is_homogeneous() for g in gens):
196
+ category = GMod.Subobjects()
197
+ elif (category.is_subcategory(GMod.Subobjects())
198
+ and not all(g.is_homogeneous() for g in gens)):
199
+ raise ValueError("all of the generators must be homogeneous")
200
+
201
+ from sage.modules.with_basis.subquotient import SubmoduleWithBasis
202
+ return SubmoduleWithBasis(gens, ambient=self,
203
+ support_order=support_order,
204
+ unitriangular=unitriangular,
205
+ category=category, *args, **opts)
206
+
207
+ def quotient_module(self, submodule, check=True, already_echelonized=False, category=None):
208
+ r"""
209
+ Construct the quotient module ``self`` / ``submodule``.
210
+
211
+ INPUT:
212
+
213
+ - ``submodule`` -- a submodule with basis of ``self``, or
214
+ something that can be turned into one via
215
+ ``self.submodule(submodule)``
216
+ - ``check``, ``already_echelonized`` -- passed down to
217
+ :meth:`ModulesWithBasis.ParentMethods.submodule`
218
+ - ``category`` -- (optional) the category of the quotient module
219
+
220
+ .. WARNING::
221
+
222
+ At this point, this only supports quotients by free
223
+ submodules admitting a basis in unitriangular echelon
224
+ form. In this case, the quotient is also a free
225
+ module, with a basis consisting of the retract of a
226
+ subset of the basis of ``self``.
227
+
228
+ EXAMPLES::
229
+
230
+ sage: # needs sage.combinat sage.modules
231
+ sage: E.<x,y,z> = ExteriorAlgebra(QQ)
232
+ sage: S = E.submodule([x + y, x*y - y*z, y])
233
+ sage: Q = E.quotient_module(S)
234
+ sage: Q.category()
235
+ Join of
236
+ Category of quotients of graded modules with basis over Rational Field and
237
+ Category of graded vector spaces with basis over Rational Field and
238
+ Category of finite dimensional filtered modules with basis over Rational Field
239
+
240
+ .. SEEALSO::
241
+
242
+ - :meth:`Modules.WithBasis.ParentMethods.submodule`
243
+ - :meth:`Rings.ParentMethods.quotient`
244
+ - :class:`sage.modules.with_basis.subquotient.QuotientModuleWithBasis`
245
+ """
246
+ from sage.modules.with_basis.subquotient import SubmoduleWithBasis, QuotientModuleWithBasis
247
+ if not isinstance(submodule, SubmoduleWithBasis):
248
+ submodule = self.submodule(submodule, check=check,
249
+ unitriangular=True,
250
+ already_echelonized=already_echelonized)
251
+
252
+ GMod = GradedModulesWithBasis(self.category().base_ring())
253
+ if category is None:
254
+ if all(g.is_homogeneous() for g in submodule.basis()):
255
+ category = GMod.Quotients()
256
+ elif (category.is_subcategory(GMod.Quotients())
257
+ and not all(g.is_homogeneous() for g in submodule.basis())):
258
+ raise ValueError("all of the basis elements must be homogeneous")
259
+
260
+ return QuotientModuleWithBasis(submodule, category=category)
261
+
262
+ class ElementMethods:
263
+ def degree_negation(self):
264
+ r"""
265
+ Return the image of ``self`` under the degree negation
266
+ automorphism of the graded module to which ``self`` belongs.
267
+
268
+ The degree negation is the module automorphism which scales
269
+ every homogeneous element of degree `k` by `(-1)^k` (for all
270
+ `k`). This assumes that the module to which ``self`` belongs
271
+ (that is, the module ``self.parent()``) is `\ZZ`-graded.
272
+
273
+ EXAMPLES::
274
+
275
+ sage: E.<a,b> = ExteriorAlgebra(QQ) # needs sage.modules
276
+ sage: ((1 + a) * (1 + b)).degree_negation() # needs sage.modules
277
+ a*b - a - b + 1
278
+ sage: E.zero().degree_negation() # needs sage.modules
279
+ 0
280
+
281
+ sage: P = GradedModulesWithBasis(ZZ).example(); P # needs sage.modules
282
+ An example of a graded module with basis:
283
+ the free module on partitions over Integer Ring
284
+ sage: pbp = lambda x: P.basis()[Partition(list(x))]
285
+ sage: p = pbp([3,1]) - 2 * pbp([2]) + 4 * pbp([1]) # needs sage.modules
286
+ sage: p.degree_negation() # needs sage.modules
287
+ -4*P[1] - 2*P[2] + P[3, 1]
288
+ """
289
+ return self.parent().degree_negation(self)
290
+
291
+ class Quotients(QuotientsCategory):
292
+ class ParentMethods:
293
+ def degree_on_basis(self, m):
294
+ r"""
295
+ Return the degree of the basis element indexed by ``m``
296
+ in ``self``.
297
+
298
+ EXAMPLES::
299
+
300
+ sage: # needs sage.combinat sage.modules
301
+ sage: E.<x,y,z> = ExteriorAlgebra(QQ)
302
+ sage: S = E.submodule([x + y, x*y - y*z, y])
303
+ sage: Q = E.quotient_module(S)
304
+ sage: B = Q.basis()
305
+ sage: [B[i].lift() for i in Q.indices()]
306
+ [1, z, x*z, y*z, x*y*z]
307
+ sage: [Q.degree_on_basis(i) for i in Q.indices()]
308
+ [0, 1, 2, 2, 3]
309
+ """
310
+ return self.basis()[m].lift().degree()
311
+
312
+ class ElementMethods:
313
+ def degree(self):
314
+ r"""
315
+ Return the degree of ``self``.
316
+
317
+ EXAMPLES::
318
+
319
+ sage: # needs sage.combinat sage.modules
320
+ sage: E.<x,y,z> = ExteriorAlgebra(QQ)
321
+ sage: S = E.submodule([x + y, x*y - y*z, y])
322
+ sage: Q = E.quotient_module(S)
323
+ sage: B = Q.basis()
324
+ sage: [B[i].lift() for i in Q.indices()]
325
+ [1, z, x*z, y*z, x*y*z]
326
+ sage: [B[i].degree() for i in Q.indices()]
327
+ [0, 1, 2, 2, 3]
328
+ """
329
+ return self.lift().degree()