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,495 @@
1
+ # sage_setup: distribution = sagemath-categories
2
+ # sage.doctest: needs sage.combinat sage.libs.singular sage.modules
3
+ r"""
4
+ Examples of a finite dimensional Lie algebra with basis
5
+ """
6
+ # ****************************************************************************
7
+ # Copyright (C) 2014 Travis Scrimshaw <tscrim at ucdavis.edu>
8
+ #
9
+ # Distributed under the terms of the GNU General Public License (GPL)
10
+ # https://www.gnu.org/licenses/
11
+ # ****************************************************************************
12
+
13
+ from sage.misc.cachefunc import cached_method
14
+ from sage.sets.family import Family
15
+ from sage.categories.lie_algebras import LieAlgebras
16
+ from sage.modules.free_module import FreeModule
17
+ from sage.structure.parent import Parent
18
+ from sage.structure.unique_representation import UniqueRepresentation
19
+ from sage.categories.examples.lie_algebras import LieAlgebraFromAssociative as BaseExample
20
+
21
+
22
+ class AbelianLieAlgebra(Parent, UniqueRepresentation):
23
+ r"""
24
+ An example of a finite dimensional Lie algebra with basis:
25
+ the abelian Lie algebra.
26
+
27
+ Let `R` be a commutative ring, and `M` an `R`-module. The
28
+ *abelian Lie algebra* on `M` is the `R`-Lie algebra
29
+ obtained by endowing `M` with the trivial Lie bracket
30
+ (`[a, b] = 0` for all `a, b \in M`).
31
+
32
+ This class illustrates a minimal implementation of a finite dimensional
33
+ Lie algebra with basis.
34
+
35
+ INPUT:
36
+
37
+ - ``R`` -- base ring
38
+
39
+ - ``n`` -- (optional) a nonnegative integer (default: ``None``)
40
+
41
+ - ``M`` -- an `R`-module (default: the free `R`-module of
42
+ rank ``n``) to serve as the ground space for the Lie algebra
43
+
44
+ - ``ambient`` -- (optional) a Lie algebra; if this is set,
45
+ then the resulting Lie algebra is declared a Lie subalgebra
46
+ of ``ambient``
47
+
48
+ OUTPUT:
49
+
50
+ The abelian Lie algebra on `M`.
51
+ """
52
+ @staticmethod
53
+ def __classcall_private__(cls, R, n=None, M=None, ambient=None):
54
+ """
55
+ Normalize input to ensure a unique representation.
56
+
57
+ EXAMPLES::
58
+
59
+ sage: from sage.categories.examples.finite_dimensional_lie_algebras_with_basis import AbelianLieAlgebra
60
+ sage: A1 = AbelianLieAlgebra(QQ, n=3)
61
+ sage: A2 = AbelianLieAlgebra(QQ, M=FreeModule(QQ, 3))
62
+ sage: A3 = AbelianLieAlgebra(QQ, 3, FreeModule(QQ, 3))
63
+ sage: A1 is A2 and A2 is A3
64
+ True
65
+
66
+ sage: A1 = AbelianLieAlgebra(QQ, 2)
67
+ sage: A2 = AbelianLieAlgebra(ZZ, 2)
68
+ sage: A1 is A2
69
+ False
70
+
71
+ sage: A1 = AbelianLieAlgebra(QQ, 0)
72
+ sage: A2 = AbelianLieAlgebra(QQ, 1)
73
+ sage: A1 is A2
74
+ False
75
+ """
76
+ if M is None:
77
+ M = FreeModule(R, n)
78
+ else:
79
+ M = M.change_ring(R)
80
+ n = M.dimension()
81
+ return super().__classcall__(cls, R, n=n, M=M, ambient=ambient)
82
+
83
+ def __init__(self, R, n=None, M=None, ambient=None):
84
+ """
85
+ EXAMPLES::
86
+
87
+ sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example()
88
+ sage: TestSuite(L).run()
89
+ """
90
+ self._M = M
91
+ cat = LieAlgebras(R).FiniteDimensional().WithBasis()
92
+ if ambient is None:
93
+ ambient = self
94
+ else:
95
+ cat = cat.Subobjects()
96
+ self._ambient = ambient
97
+ Parent.__init__(self, base=R, category=cat)
98
+
99
+ from sage.categories.lie_algebras import LiftMorphism
100
+ self._lift_uea = LiftMorphism(self, self._construct_UEA())
101
+ self._lift_uea.register_as_coercion()
102
+
103
+ def _repr_(self):
104
+ """
105
+ EXAMPLES::
106
+
107
+ sage: LieAlgebras(QQ).FiniteDimensional().WithBasis().example()
108
+ An example of a finite dimensional Lie algebra with basis:
109
+ the 3-dimensional abelian Lie algebra over Rational Field
110
+ """
111
+ ret = "An example of a finite dimensional Lie algebra with basis:" \
112
+ " the {}-dimensional abelian Lie algebra over {}".format(
113
+ self.dimension(), self.base_ring())
114
+ B = self._M.basis_matrix()
115
+ if not B.is_one():
116
+ ret += " with basis matrix:\n{!r}".format(B)
117
+ return ret
118
+
119
+ def _element_constructor_(self, x):
120
+ """
121
+ Construct an element of ``self`` from ``x``.
122
+
123
+ EXAMPLES::
124
+
125
+ sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example()
126
+ sage: L(0)
127
+ (0, 0, 0)
128
+ sage: M = FreeModule(ZZ, 3)
129
+ sage: L(M([1, -2, 2]))
130
+ (1, -2, 2)
131
+ sage: a,b,c = L.lie_algebra_generators()
132
+ sage: X = L.subalgebra([a+b, 2*a+c])
133
+ sage: x,y = X.basis()
134
+ sage: L(x)
135
+ (1, 0, 1/2)
136
+ sage: L(x+y)
137
+ (1, 1, 0)
138
+ """
139
+ if isinstance(x, AbelianLieAlgebra.Element):
140
+ x = x.value
141
+ return self.element_class(self, self._M(x))
142
+
143
+ def lift(self, x):
144
+ r"""
145
+ Return the lift of ``self``.
146
+
147
+ EXAMPLES::
148
+
149
+ sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example()
150
+ sage: a, b, c = L.gens()
151
+ sage: L.lift(a)
152
+ b0
153
+ sage: L.lift(b).parent() is L.universal_enveloping_algebra()
154
+ True
155
+
156
+ sage: I = L.ideal([a + 2*b, b + 3*c])
157
+ sage: I.lift(I.basis()[0])
158
+ (1, 0, -6)
159
+ """
160
+ # FIXME: This method can likely be simplified or removed once we
161
+ # disentangle the UEA lift from the generic lift
162
+ A = self._ambient
163
+ if A is self:
164
+ return self._lift_uea(x)
165
+ return A.element_class(A, A._M(x.value))
166
+
167
+ def universal_enveloping_algebra(self):
168
+ r"""
169
+ Return the universal enveloping algebra of ``self``.
170
+
171
+ EXAMPLES::
172
+
173
+ sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example()
174
+ sage: L.universal_enveloping_algebra()
175
+ Noncommutative Multivariate Polynomial Ring in b0, b1, b2
176
+ over Rational Field, nc-relations: {}
177
+ """
178
+ # FIXME: This method can likely be removed once we
179
+ # disentangle the UEA lift from the generic lift
180
+ return self._lift_uea.codomain()
181
+
182
+ def _order(self, x):
183
+ r"""
184
+ Return a key for sorting for the index ``x``.
185
+
186
+ TESTS::
187
+
188
+ sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example()
189
+ sage: L._order(2)
190
+ 2
191
+ """
192
+ return x
193
+
194
+ @cached_method
195
+ def zero(self):
196
+ """
197
+ Return the zero element.
198
+
199
+ EXAMPLES::
200
+
201
+ sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example()
202
+ sage: L.zero()
203
+ (0, 0, 0)
204
+ """
205
+ return self.element_class(self, self._M.zero())
206
+
207
+ def basis_matrix(self):
208
+ """
209
+ Return the basis matrix of ``self``.
210
+
211
+ EXAMPLES::
212
+
213
+ sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example()
214
+ sage: L.basis_matrix()
215
+ [1 0 0]
216
+ [0 1 0]
217
+ [0 0 1]
218
+ """
219
+ return self._M.basis_matrix()
220
+
221
+ def ambient(self):
222
+ """
223
+ Return the ambient Lie algebra of ``self``.
224
+
225
+ EXAMPLES::
226
+
227
+ sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example()
228
+ sage: a, b, c = L.lie_algebra_generators()
229
+ sage: S = L.subalgebra([2*a+b, b + c])
230
+ sage: S.ambient() == L
231
+ True
232
+ """
233
+ return self._ambient
234
+
235
+ def subalgebra(self, gens):
236
+ """
237
+ Return the Lie subalgebra of ``self`` generated by the
238
+ elements of the iterable ``gens``.
239
+
240
+ This currently requires the ground ring `R` to be a field.
241
+
242
+ EXAMPLES::
243
+
244
+ sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example()
245
+ sage: a, b, c = L.lie_algebra_generators()
246
+ sage: L.subalgebra([2*a+b, b + c])
247
+ An example of a finite dimensional Lie algebra with basis:
248
+ the 2-dimensional abelian Lie algebra over Rational Field with
249
+ basis matrix:
250
+ [ 1 0 -1/2]
251
+ [ 0 1 1]
252
+ """
253
+ if isinstance(gens, AbelianLieAlgebra):
254
+ gens = [self(g) for g in gens.gens()]
255
+ N = self._M.subspace([g.value for g in gens])
256
+ return AbelianLieAlgebra(self.base_ring(), M=N, ambient=self._ambient)
257
+
258
+ ideal = subalgebra
259
+
260
+ def is_ideal(self, A):
261
+ """
262
+ Return if ``self`` is an ideal of the ambient space ``A``.
263
+
264
+ EXAMPLES::
265
+
266
+ sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example()
267
+ sage: a, b, c = L.lie_algebra_generators()
268
+ sage: L.is_ideal(L)
269
+ True
270
+ sage: S1 = L.subalgebra([2*a+b, b + c])
271
+ sage: S1.is_ideal(L)
272
+ True
273
+ sage: S2 = L.subalgebra([2*a+b])
274
+ sage: S2.is_ideal(S1)
275
+ True
276
+ sage: S1.is_ideal(S2)
277
+ False
278
+ """
279
+ if not isinstance(A, AbelianLieAlgebra):
280
+ return super().is_ideal(A)
281
+ if A == self or A == self._ambient:
282
+ return True
283
+ if self._ambient != A._ambient:
284
+ return False
285
+ return self._M.is_submodule(A._M)
286
+
287
+ def basis(self):
288
+ """
289
+ Return the basis of ``self``.
290
+
291
+ EXAMPLES::
292
+
293
+ sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example()
294
+ sage: L.basis()
295
+ Finite family {0: (1, 0, 0), 1: (0, 1, 0), 2: (0, 0, 1)}
296
+ """
297
+ d = {i: self.element_class(self, b)
298
+ for i,b in enumerate(self._M.basis())}
299
+ return Family(d)
300
+
301
+ lie_algebra_generators = basis
302
+
303
+ def gens(self) -> tuple:
304
+ """
305
+ Return the generators of ``self``.
306
+
307
+ EXAMPLES::
308
+
309
+ sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example()
310
+ sage: L.gens()
311
+ ((1, 0, 0), (0, 1, 0), (0, 0, 1))
312
+ """
313
+ return tuple([self.element_class(self, b) for b in self._M.basis()])
314
+
315
+ def module(self):
316
+ """
317
+ Return an `R`-module which is isomorphic to the
318
+ underlying `R`-module of ``self``.
319
+
320
+ See
321
+ :meth:`sage.categories.lie_algebras.LieAlgebras.module` for
322
+ an explanation.
323
+
324
+ In this particular example, this returns the module `M`
325
+ that was used to construct ``self``.
326
+
327
+ EXAMPLES::
328
+
329
+ sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example()
330
+ sage: L.module()
331
+ Vector space of dimension 3 over Rational Field
332
+
333
+ sage: a, b, c = L.lie_algebra_generators()
334
+ sage: S = L.subalgebra([2*a+b, b + c])
335
+ sage: S.module()
336
+ Vector space of degree 3 and dimension 2 over Rational Field
337
+ Basis matrix:
338
+ [ 1 0 -1/2]
339
+ [ 0 1 1]
340
+ """
341
+ return self._M
342
+
343
+ def from_vector(self, v, order=None):
344
+ """
345
+ Return the element of ``self`` corresponding to the
346
+ vector ``v`` in ``self.module()``.
347
+
348
+ Implement this if you implement :meth:`module`; see the
349
+ documentation of
350
+ :meth:`sage.categories.lie_algebras.LieAlgebras.module`
351
+ for how this is to be done.
352
+
353
+ EXAMPLES::
354
+
355
+ sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example()
356
+ sage: u = L.from_vector(vector(QQ, (1, 0, 0))); u
357
+ (1, 0, 0)
358
+ sage: parent(u) is L
359
+ True
360
+ """
361
+ return self.element_class(self, self._M(v))
362
+
363
+ def leading_monomials(self):
364
+ r"""
365
+ Return the set of leading monomials of the basis of ``self``.
366
+
367
+ EXAMPLES::
368
+
369
+ sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example()
370
+ sage: a, b, c = L.lie_algebra_generators()
371
+ sage: I = L.ideal([2*a + b, b + c])
372
+ sage: I.leading_monomials()
373
+ ((1, 0, 0), (0, 1, 0))
374
+ """
375
+ # for free modules, the leading monomial is actually the trailing monomial
376
+ return tuple([self._ambient._M(b.value).trailing_monomial()
377
+ for b in self.basis()])
378
+
379
+ class Element(BaseExample.Element):
380
+ def __init__(self, parent, value):
381
+ """
382
+ Initialize ``self``.
383
+
384
+ EXAMPLES::
385
+
386
+ sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example()
387
+ sage: a, b, c = L.lie_algebra_generators()
388
+ sage: TestSuite(a).run()
389
+ """
390
+ value.set_immutable()
391
+ super().__init__(parent, value)
392
+
393
+ def __iter__(self):
394
+ """
395
+ Iterate over ``self`` by returning pairs ``(i, c)`` where ``i``
396
+ is the index of the basis element and ``c`` is the corresponding
397
+ coefficient.
398
+
399
+ EXAMPLES::
400
+
401
+ sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example()
402
+ sage: a, b, c = L.lie_algebra_generators()
403
+ sage: elt = 2*a - c
404
+ sage: list(elt)
405
+ [(0, 2), (2, -1)]
406
+ """
407
+ zero = self.parent().base_ring().zero()
408
+ for i, c in self.value.items():
409
+ if c != zero:
410
+ yield (i, c)
411
+
412
+ def __getitem__(self, i):
413
+ """
414
+ Redirect the ``__getitem__()`` to the wrapped element unless
415
+ ``i`` is a basis index.
416
+
417
+ EXAMPLES::
418
+
419
+ sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example()
420
+ sage: a, b, c = L.lie_algebra_generators()
421
+ sage: elt = 2*a + b - c
422
+ sage: elt[0]
423
+ 2
424
+ sage: elt[2]
425
+ -1
426
+ """
427
+ return self.value.__getitem__(i)
428
+
429
+ def _bracket_(self, y):
430
+ """
431
+ Return the Lie bracket ``[self, y]``.
432
+
433
+ EXAMPLES::
434
+
435
+ sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example()
436
+ sage: a, b, c = L.lie_algebra_generators()
437
+ sage: a.bracket(c)
438
+ (0, 0, 0)
439
+ sage: a.bracket(b).bracket(c)
440
+ (0, 0, 0)
441
+ """
442
+ return self.parent().zero()
443
+
444
+ def lift(self):
445
+ """
446
+ Return the lift of ``self`` to the universal enveloping algebra.
447
+
448
+ EXAMPLES::
449
+
450
+ sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example()
451
+ sage: a, b, c = L.lie_algebra_generators()
452
+ sage: elt = 2*a + 2*b + 3*c
453
+ sage: elt.lift() # needs sage.combinat sage.libs.singular
454
+ 2*b0 + 2*b1 + 3*b2
455
+ """
456
+ UEA = self.parent().universal_enveloping_algebra()
457
+ gens = UEA.gens()
458
+ return UEA.sum(c * gens[i] for i, c in self.value.items())
459
+
460
+ def to_vector(self, order=None, sparse=False):
461
+ """
462
+ Return ``self`` as a vector in
463
+ ``self.parent().module()``.
464
+
465
+ See the docstring of the latter method for the meaning
466
+ of this.
467
+
468
+ EXAMPLES::
469
+
470
+ sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example()
471
+ sage: a, b, c = L.lie_algebra_generators()
472
+ sage: elt = 2*a + 2*b + 3*c
473
+ sage: elt.to_vector()
474
+ (2, 2, 3)
475
+ """
476
+ if sparse:
477
+ return self.value.sparse_vector()
478
+ return self.value
479
+
480
+ def monomial_coefficients(self, copy=True):
481
+ """
482
+ Return the monomial coefficients of ``self``.
483
+
484
+ EXAMPLES::
485
+
486
+ sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example()
487
+ sage: a, b, c = L.lie_algebra_generators()
488
+ sage: elt = 2*a + 2*b + 3*c
489
+ sage: elt.monomial_coefficients()
490
+ {0: 2, 1: 2, 2: 3}
491
+ """
492
+ return self.value.monomial_coefficients(copy)
493
+
494
+
495
+ Example = AbelianLieAlgebra
@@ -0,0 +1,208 @@
1
+ # sage_setup: distribution = sagemath-categories
2
+ r"""
3
+ Examples of finite enumerated sets
4
+ """
5
+ # ****************************************************************************
6
+ # Copyright (C) 2009 Florent Hivert <Florent.Hivert@univ-rouen.fr>
7
+ #
8
+ # Distributed under the terms of the GNU General Public License (GPL)
9
+ # https://www.gnu.org/licenses/
10
+ # *****************************************************************************
11
+ from sage.structure.parent import Parent
12
+ from sage.structure.unique_representation import UniqueRepresentation
13
+ from sage.categories.finite_enumerated_sets import FiniteEnumeratedSets
14
+ from sage.rings.integer import Integer
15
+ from sage.rings.integer_ring import IntegerRing
16
+
17
+
18
+ class Example(UniqueRepresentation, Parent):
19
+ r"""
20
+ An example of a finite enumerated set: `\{1,2,3\}`.
21
+
22
+ This class provides a minimal implementation of a finite enumerated set.
23
+
24
+ See :class:`~sage.sets.finite_enumerated_set.FiniteEnumeratedSet` for a
25
+ full featured implementation.
26
+
27
+ EXAMPLES::
28
+
29
+ sage: C = FiniteEnumeratedSets().example()
30
+ sage: C.cardinality()
31
+ 3
32
+ sage: C.list()
33
+ [1, 2, 3]
34
+ sage: C.an_element()
35
+ 1
36
+
37
+ This checks that the different methods of the enumerated set `C`
38
+ return consistent results::
39
+
40
+ sage: TestSuite(C).run(verbose = True)
41
+ running ._test_an_element() . . . pass
42
+ running ._test_cardinality() . . . pass
43
+ running ._test_category() . . . pass
44
+ running ._test_construction() . . . pass
45
+ running ._test_elements() . . .
46
+ Running the test suite of self.an_element()
47
+ running ._test_category() . . . pass
48
+ running ._test_eq() . . . pass
49
+ running ._test_new() . . . pass
50
+ running ._test_nonzero_equal() . . . pass
51
+ running ._test_not_implemented_methods() . . . pass
52
+ running ._test_pickling() . . . pass
53
+ pass
54
+ running ._test_elements_eq_reflexive() . . . pass
55
+ running ._test_elements_eq_symmetric() . . . pass
56
+ running ._test_elements_eq_transitive() . . . pass
57
+ running ._test_elements_neq() . . . pass
58
+ running ._test_enumerated_set_contains() . . . pass
59
+ running ._test_enumerated_set_iter_cardinality() . . . pass
60
+ running ._test_enumerated_set_iter_list() . . . pass
61
+ running ._test_eq() . . . pass
62
+ running ._test_new() . . . pass
63
+ running ._test_not_implemented_methods() . . . pass
64
+ running ._test_pickling() . . . pass
65
+ running ._test_some_elements() . . . pass
66
+ """
67
+
68
+ def __init__(self):
69
+ """
70
+ TESTS::
71
+
72
+ sage: C = FiniteEnumeratedSets().example()
73
+ sage: C
74
+ An example of a finite enumerated set: {1,2,3}
75
+ sage: C.category()
76
+ Category of facade finite enumerated sets
77
+ sage: TestSuite(C).run()
78
+ """
79
+ self._set = [Integer(_) for _ in [1, 2, 3]]
80
+ Parent.__init__(self, facade=IntegerRing(),
81
+ category=FiniteEnumeratedSets())
82
+
83
+ def _repr_(self):
84
+ """
85
+ TESTS::
86
+
87
+ sage: FiniteEnumeratedSets().example() # indirect doctest
88
+ An example of a finite enumerated set: {1,2,3}
89
+ """
90
+ return "An example of a finite enumerated set: {1,2,3}"
91
+
92
+ def __contains__(self, o):
93
+ """
94
+ EXAMPLES::
95
+
96
+ sage: C = FiniteEnumeratedSets().example()
97
+ sage: 1 in C
98
+ True
99
+ sage: 0 in C
100
+ False
101
+ """
102
+ return o in self._set
103
+
104
+ def __iter__(self):
105
+ """
106
+ EXAMPLES::
107
+
108
+ sage: list(FiniteEnumeratedSets().example()) # indirect doctest
109
+ [1, 2, 3]
110
+ """
111
+ return iter(self._set)
112
+
113
+
114
+ class IsomorphicObjectOfFiniteEnumeratedSet(UniqueRepresentation, Parent):
115
+
116
+ def __init__(self, ambient=Example()):
117
+ """
118
+ TESTS::
119
+
120
+ sage: C = FiniteEnumeratedSets().IsomorphicObjects().example()
121
+ sage: C
122
+ The image by some isomorphism of An example of a finite enumerated set: {1,2,3}
123
+ sage: C.category()
124
+ Category of facade isomorphic objects of finite enumerated sets
125
+ sage: TestSuite(C).run()
126
+ """
127
+ self._ambient = ambient
128
+ Parent.__init__(self, facade=IntegerRing(),
129
+ category=FiniteEnumeratedSets().IsomorphicObjects())
130
+
131
+ def ambient(self):
132
+ """
133
+ Return the ambient space for ``self``, as per
134
+ :meth:`Sets.Subquotients.ParentMethods.ambient()
135
+ <sage.categories.sets_cat.Sets.Subquotients.ParentMethods.ambient>`.
136
+
137
+ EXAMPLES::
138
+
139
+ sage: C = FiniteEnumeratedSets().IsomorphicObjects().example(); C
140
+ The image by some isomorphism of An example of a finite enumerated set: {1,2,3}
141
+ sage: C.ambient()
142
+ An example of a finite enumerated set: {1,2,3}
143
+ """
144
+ return self._ambient
145
+
146
+ def lift(self, x):
147
+ """
148
+ INPUT:
149
+
150
+ - ``x`` -- an element of ``self``
151
+
152
+ Lifts ``x`` to the ambient space for ``self``, as per
153
+ :meth:`Sets.Subquotients.ParentMethods.lift()
154
+ <sage.categories.sets_cat.Sets.Subquotients.ParentMethods.lift>`.
155
+
156
+ EXAMPLES::
157
+
158
+ sage: C = FiniteEnumeratedSets().IsomorphicObjects().example(); C
159
+ The image by some isomorphism of An example of a finite enumerated set: {1,2,3}
160
+ sage: C.lift(9)
161
+ 3
162
+ """
163
+ return x.sqrt()
164
+
165
+ def retract(self, x):
166
+ """
167
+ INPUT:
168
+
169
+ - ``x`` -- an element of the ambient space for ``self``
170
+
171
+ Retracts ``x`` from the ambient space to ``self``, as per
172
+ :meth:`Sets.Subquotients.ParentMethods.retract()
173
+ <sage.categories.sets_cat.Sets.Subquotients.ParentMethods.retract>`.
174
+
175
+ EXAMPLES::
176
+
177
+ sage: C = FiniteEnumeratedSets().IsomorphicObjects().example(); C
178
+ The image by some isomorphism of An example of a finite enumerated set: {1,2,3}
179
+ sage: C.retract(3)
180
+ 9
181
+ """
182
+ return x ** 2
183
+
184
+ def __contains__(self, x):
185
+ """
186
+ Membership testing by checking whether the preimage by the
187
+ bijection is in the ambient space.
188
+
189
+ EXAMPLES::
190
+
191
+ sage: A = FiniteEnumeratedSets().IsomorphicObjects().example(); A
192
+ The image by some isomorphism of An example of a finite enumerated set: {1,2,3}
193
+ sage: list(A)
194
+ [1, 4, 9]
195
+ sage: 4 in A
196
+ True
197
+ sage: 3 in A
198
+ False
199
+ sage: None in A
200
+ False
201
+
202
+ TODO: devise a robust implementation, and move it up to
203
+ ``FiniteEnumeratedSets.IsomorphicObjects``.
204
+ """
205
+ try:
206
+ return self.lift(x) in self.ambient()
207
+ except Exception:
208
+ return False