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,722 @@
1
+ # sage_setup: distribution = sagemath-categories
2
+ # sage.doctest: needs sage.graphs, sage.combinat
3
+ r"""
4
+ Posets
5
+ """
6
+ # ****************************************************************************
7
+ # Copyright (C) 2011 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
+ from sage.misc.cachefunc import cached_method
13
+ from sage.misc.abstract_method import abstract_method
14
+ from sage.misc.lazy_import import LazyImport
15
+ from sage.categories.category import Category
16
+ from sage.categories.sets_cat import Sets
17
+
18
+
19
+ class Posets(Category):
20
+ r"""
21
+ The category of posets i.e. sets with a partial order structure.
22
+
23
+ EXAMPLES::
24
+
25
+ sage: Posets()
26
+ Category of posets
27
+ sage: Posets().super_categories()
28
+ [Category of sets]
29
+ sage: P = Posets().example(); P
30
+ An example of a poset: sets ordered by inclusion
31
+
32
+ The partial order is implemented by the mandatory method
33
+ :meth:`~Posets.ParentMethods.le`::
34
+
35
+ sage: x = P(Set([1,3])); y = P(Set([1,2,3]))
36
+ sage: x, y
37
+ ({1, 3}, {1, 2, 3})
38
+ sage: P.le(x, y)
39
+ True
40
+ sage: P.le(x, x)
41
+ True
42
+ sage: P.le(y, x)
43
+ False
44
+
45
+ The other comparison methods are called
46
+ :meth:`~Posets.ParentMethods.lt`, :meth:`~Posets.ParentMethods.ge`,
47
+ :meth:`~Posets.ParentMethods.gt`, following Python's naming
48
+ convention in :mod:`operator`. Default implementations are
49
+ provided::
50
+
51
+ sage: P.lt(x, x)
52
+ False
53
+ sage: P.ge(y, x)
54
+ True
55
+
56
+ Unless the poset is a facade (see :class:`Sets.Facade`), one can
57
+ compare directly its elements using the usual Python operators::
58
+
59
+ sage: D = Poset((divisors(30), attrcall("divides")), facade = False)
60
+ sage: D(3) <= D(6)
61
+ True
62
+ sage: D(3) <= D(3)
63
+ True
64
+ sage: D(3) <= D(5)
65
+ False
66
+ sage: D(3) < D(3)
67
+ False
68
+ sage: D(10) >= D(5)
69
+ True
70
+
71
+ At this point, this has to be implemented by hand. Once
72
+ :issue:`10130` will be resolved, this will be automatically
73
+ provided by this category::
74
+
75
+ sage: # not implemented
76
+ sage: x < y
77
+ True
78
+ sage: x < x
79
+ False
80
+ sage: x <= x
81
+ True
82
+ sage: y >= x
83
+ True
84
+
85
+ .. SEEALSO:: :func:`Poset`, :class:`FinitePosets`, :class:`LatticePosets`
86
+
87
+ TESTS::
88
+
89
+ sage: C = Posets()
90
+ sage: TestSuite(C).run()
91
+ """
92
+ @cached_method
93
+ def super_categories(self):
94
+ r"""
95
+ Return a list of the (immediate) super categories of
96
+ ``self``, as per :meth:`Category.super_categories`.
97
+
98
+ EXAMPLES::
99
+
100
+ sage: Posets().super_categories()
101
+ [Category of sets]
102
+ """
103
+ return [Sets()]
104
+
105
+ def example(self, choice=None):
106
+ r"""
107
+ Return examples of objects of ``Posets()``, as per
108
+ :meth:`Category.example()
109
+ <sage.categories.category.Category.example>`.
110
+
111
+ EXAMPLES::
112
+
113
+ sage: Posets().example()
114
+ An example of a poset: sets ordered by inclusion
115
+
116
+ sage: Posets().example("facade")
117
+ An example of a facade poset:
118
+ the positive integers ordered by divisibility
119
+ """
120
+ from sage.categories.examples.posets import FiniteSetsOrderedByInclusion, PositiveIntegersOrderedByDivisibilityFacade
121
+ if choice == "facade":
122
+ return PositiveIntegersOrderedByDivisibilityFacade()
123
+ else:
124
+ return FiniteSetsOrderedByInclusion()
125
+
126
+ def __iter__(self):
127
+ r"""
128
+ Iterator over representatives of the isomorphism classes of
129
+ posets with finitely many vertices.
130
+
131
+ .. warning:: this feature may become deprecated, since it does
132
+ of course not iterate through all posets.
133
+
134
+ EXAMPLES::
135
+
136
+ sage: P = Posets()
137
+ sage: it = iter(P)
138
+ sage: for _ in range(10): print(next(it)) # needs nauty
139
+ Finite poset containing 0 elements
140
+ Finite poset containing 1 elements
141
+ Finite poset containing 2 elements
142
+ Finite poset containing 2 elements
143
+ Finite poset containing 3 elements
144
+ Finite poset containing 3 elements
145
+ Finite poset containing 3 elements
146
+ Finite poset containing 3 elements
147
+ Finite poset containing 3 elements
148
+ Finite poset containing 4 elements
149
+ """
150
+ from sage.combinat.posets.posets import FinitePosets_n
151
+ n = 0
152
+ while True:
153
+ yield from FinitePosets_n(n)
154
+ n += 1
155
+
156
+ Finite = LazyImport('sage.categories.finite_posets', 'FinitePosets')
157
+
158
+ class ParentMethods:
159
+
160
+ @abstract_method
161
+ def le(self, x, y):
162
+ r"""
163
+ Return whether `x \le y` in the poset ``self``.
164
+
165
+ INPUT:
166
+
167
+ - ``x``, ``y`` -- elements of ``self``
168
+
169
+ EXAMPLES::
170
+
171
+ sage: D = Poset((divisors(30), attrcall("divides")))
172
+ sage: D.le( 3, 6 )
173
+ True
174
+ sage: D.le( 3, 3 )
175
+ True
176
+ sage: D.le( 3, 5 )
177
+ False
178
+ """
179
+
180
+ def lt(self, x, y):
181
+ r"""
182
+ Return whether `x < y` in the poset ``self``.
183
+
184
+ INPUT:
185
+
186
+ - ``x``, ``y`` -- elements of ``self``
187
+
188
+ This default implementation delegates the work to :meth:`le`.
189
+
190
+ EXAMPLES::
191
+
192
+ sage: D = Poset((divisors(30), attrcall("divides")))
193
+ sage: D.lt( 3, 6 )
194
+ True
195
+ sage: D.lt( 3, 3 )
196
+ False
197
+ sage: D.lt( 3, 5 )
198
+ False
199
+ """
200
+ return self.le(x,y) and x != y
201
+
202
+ def ge(self, x, y):
203
+ r"""
204
+ Return whether `x \ge y` in the poset ``self``.
205
+
206
+ INPUT:
207
+
208
+ - ``x``, ``y`` -- elements of ``self``
209
+
210
+ This default implementation delegates the work to :meth:`le`.
211
+
212
+ EXAMPLES::
213
+
214
+ sage: D = Poset((divisors(30), attrcall("divides")))
215
+ sage: D.ge( 6, 3 )
216
+ True
217
+ sage: D.ge( 3, 3 )
218
+ True
219
+ sage: D.ge( 3, 5 )
220
+ False
221
+ """
222
+ return self.le(y,x)
223
+
224
+ def gt(self, x, y):
225
+ r"""
226
+ Return whether `x > y` in the poset ``self``.
227
+
228
+ INPUT:
229
+
230
+ - ``x``, ``y`` -- elements of ``self``
231
+
232
+ This default implementation delegates the work to :meth:`lt`.
233
+
234
+ EXAMPLES::
235
+
236
+ sage: D = Poset((divisors(30), attrcall("divides")))
237
+ sage: D.gt( 3, 6 )
238
+ False
239
+ sage: D.gt( 3, 3 )
240
+ False
241
+ sage: D.gt( 3, 5 )
242
+ False
243
+ """
244
+ return self.lt(y,x)
245
+
246
+ @abstract_method(optional=True)
247
+ def upper_covers(self, x):
248
+ r"""
249
+ Return the upper covers of `x`, that is, the elements `y`
250
+ such that `x<y` and there exists no `z` such that `x<z<y`.
251
+
252
+ EXAMPLES::
253
+
254
+ sage: D = Poset((divisors(30), attrcall("divides")))
255
+ sage: D.upper_covers(3)
256
+ [6, 15]
257
+ """
258
+
259
+ @abstract_method(optional=True)
260
+ def lower_covers(self, x):
261
+ r"""
262
+ Return the lower covers of `x`, that is, the elements `y`
263
+ such that `y<x` and there exists no `z` such that `y<z<x`.
264
+
265
+ EXAMPLES::
266
+
267
+ sage: D = Poset((divisors(30), attrcall("divides")))
268
+ sage: D.lower_covers(15)
269
+ [3, 5]
270
+ """
271
+
272
+ @abstract_method(optional=True)
273
+ def order_ideal(self, elements):
274
+ r"""
275
+ Return the order ideal in ``self`` generated by the elements
276
+ of an iterable ``elements``.
277
+
278
+ A subset `I` of a poset is said to be an order ideal if, for
279
+ any `x` in `I` and `y` such that `y \le x`, then `y` is in `I`.
280
+
281
+ This is also called the lower set generated by these elements.
282
+
283
+ EXAMPLES::
284
+
285
+ sage: B = posets.BooleanLattice(4)
286
+ sage: B.order_ideal([7,10])
287
+ [0, 1, 2, 3, 4, 5, 6, 7, 8, 10]
288
+ """
289
+
290
+ @abstract_method(optional=True)
291
+ def order_filter(self, elements):
292
+ r"""
293
+ Return the order filter generated by a list of elements.
294
+
295
+ A subset `I` of a poset is said to be an order filter if, for
296
+ any `x` in `I` and `y` such that `y \ge x`, then `y` is in `I`.
297
+
298
+ This is also called the upper set generated by these elements.
299
+
300
+ EXAMPLES::
301
+
302
+ sage: B = posets.BooleanLattice(4)
303
+ sage: B.order_filter([3,8])
304
+ [3, 7, 8, 9, 10, 11, 12, 13, 14, 15]
305
+ """
306
+
307
+ def directed_subset(self, elements, direction):
308
+ r"""
309
+ Return the order filter or the order ideal generated by a
310
+ list of elements.
311
+
312
+ If ``direction`` is ``'up'``, the order filter (upper set) is
313
+ being returned.
314
+
315
+ If ``direction`` is ``'down'``, the order ideal (lower set) is
316
+ being returned.
317
+
318
+ INPUT:
319
+
320
+ - ``elements`` -- list of elements
321
+
322
+ - ``direction`` -- ``'up'`` or ``'down'``
323
+
324
+ EXAMPLES::
325
+
326
+ sage: B = posets.BooleanLattice(4)
327
+ sage: B.directed_subset([3, 8], 'up')
328
+ [3, 7, 8, 9, 10, 11, 12, 13, 14, 15]
329
+ sage: B.directed_subset([7, 10], 'down')
330
+ [0, 1, 2, 3, 4, 5, 6, 7, 8, 10]
331
+
332
+ TESTS::
333
+
334
+ sage: B = posets.BooleanLattice(3)
335
+ sage: B.directed_subset([3, 1], 'banana')
336
+ Traceback (most recent call last):
337
+ ...
338
+ ValueError: direction must be either 'up' or 'down'
339
+ """
340
+ if direction == 'up':
341
+ return self.order_filter(elements)
342
+ if direction == 'down':
343
+ return self.order_ideal(elements)
344
+ raise ValueError("direction must be either 'up' or 'down'")
345
+
346
+ def principal_order_ideal(self, x):
347
+ r"""
348
+ Return the order ideal generated by an element ``x``.
349
+
350
+ This is also called the lower set generated by this element.
351
+
352
+ EXAMPLES::
353
+
354
+ sage: B = posets.BooleanLattice(4)
355
+ sage: B.principal_order_ideal(6)
356
+ [0, 2, 4, 6]
357
+ """
358
+ return self.order_ideal([x])
359
+
360
+ principal_lower_set = principal_order_ideal
361
+
362
+ def principal_order_filter(self, x):
363
+ r"""
364
+ Return the order filter generated by an element ``x``.
365
+
366
+ This is also called the upper set generated by this element.
367
+
368
+ EXAMPLES::
369
+
370
+ sage: B = posets.BooleanLattice(4)
371
+ sage: B.principal_order_filter(2)
372
+ [2, 3, 6, 7, 10, 11, 14, 15]
373
+ """
374
+ return self.order_filter([x])
375
+
376
+ principal_upper_set = principal_order_filter
377
+
378
+ def order_ideal_toggle(self, I, v):
379
+ r"""
380
+ Return the result of toggling the element ``v`` in the
381
+ order ideal ``I``.
382
+
383
+ If `v` is an element of a poset `P`, then toggling the
384
+ element `v` is an automorphism of the set `J(P)` of all
385
+ order ideals of `P`. It is defined as follows: If `I`
386
+ is an order ideal of `P`, then the image of `I` under
387
+ toggling the element `v` is
388
+
389
+ - the set `I \cup \{ v \}`, if `v \not\in I` but
390
+ every element of `P` smaller than `v` is in `I`;
391
+
392
+ - the set `I \setminus \{ v \}`, if `v \in I` but
393
+ no element of `P` greater than `v` is in `I`;
394
+
395
+ - `I` otherwise.
396
+
397
+ This image always is an order ideal of `P`.
398
+
399
+ EXAMPLES::
400
+
401
+ sage: P = Poset({1: [2,3], 2: [4], 3: []})
402
+ sage: I = Set({1, 2})
403
+ sage: I in P.order_ideals_lattice() # needs sage.modules
404
+ True
405
+ sage: P.order_ideal_toggle(I, 1)
406
+ {1, 2}
407
+ sage: P.order_ideal_toggle(I, 2)
408
+ {1}
409
+ sage: P.order_ideal_toggle(I, 3)
410
+ {1, 2, 3}
411
+ sage: P.order_ideal_toggle(I, 4)
412
+ {1, 2, 4}
413
+ sage: P4 = Posets(4)
414
+ sage: all(all(all(P.order_ideal_toggle(P.order_ideal_toggle(I, i), i) == I # needs nauty sage.modules
415
+ ....: for i in range(4))
416
+ ....: for I in P.order_ideals_lattice(facade=True))
417
+ ....: for P in P4)
418
+ True
419
+ """
420
+ if v not in I:
421
+ if all(u in I for u in self.lower_covers(v)):
422
+ from sage.sets.set import Set
423
+ return I.union(Set({v}))
424
+ else:
425
+ if all(u not in I for u in self.upper_covers(v)):
426
+ from sage.sets.set import Set
427
+ return I.difference(Set({v}))
428
+ return I
429
+
430
+ def order_ideal_toggles(self, I, vs):
431
+ r"""
432
+ Return the result of toggling the elements of the list (or
433
+ iterable) ``vs`` (one by one, from left to right) in the order
434
+ ideal ``I``.
435
+
436
+ See :meth:`order_ideal_toggle` for a definition of toggling.
437
+
438
+ EXAMPLES::
439
+
440
+ sage: P = Poset({1: [2,3], 2: [4], 3: []})
441
+ sage: I = Set({1, 2})
442
+ sage: P.order_ideal_toggles(I, [1,2,3,4])
443
+ {1, 3}
444
+ sage: P.order_ideal_toggles(I, (1,2,3,4))
445
+ {1, 3}
446
+ """
447
+ for v in vs:
448
+ I = self.order_ideal_toggle(I, v)
449
+ return I
450
+
451
+ def is_order_ideal(self, o):
452
+ """
453
+ Return whether ``o`` is an order ideal of ``self``, assuming ``self``
454
+ has no infinite descending path.
455
+
456
+ INPUT:
457
+
458
+ - ``o`` -- list (or set, or tuple) containing some elements of ``self``
459
+
460
+ EXAMPLES::
461
+
462
+ sage: P = Poset((divisors(12), attrcall("divides")),
463
+ ....: facade=True, linear_extension=True)
464
+ sage: sorted(P.list())
465
+ [1, 2, 3, 4, 6, 12]
466
+ sage: P.is_order_ideal([1, 3])
467
+ True
468
+ sage: P.is_order_ideal([])
469
+ True
470
+ sage: P.is_order_ideal({1, 3})
471
+ True
472
+ sage: P.is_order_ideal([1, 3, 4])
473
+ False
474
+ """
475
+ return all((u in self and all(x in o for x in self.lower_covers(u))) for u in o)
476
+
477
+ def is_order_filter(self, o):
478
+ """
479
+ Return whether ``o`` is an order filter of ``self``, assuming ``self``
480
+ has no infinite ascending path.
481
+
482
+ INPUT:
483
+
484
+ - ``o`` -- list (or set, or tuple) containing some elements of ``self``
485
+
486
+ EXAMPLES::
487
+
488
+ sage: P = Poset((divisors(12), attrcall("divides")),
489
+ ....: facade=True, linear_extension=True)
490
+ sage: sorted(P.list())
491
+ [1, 2, 3, 4, 6, 12]
492
+ sage: P.is_order_filter([4, 12])
493
+ True
494
+ sage: P.is_order_filter([])
495
+ True
496
+ sage: P.is_order_filter({3, 4, 12})
497
+ False
498
+ sage: P.is_order_filter({3, 6, 12})
499
+ True
500
+ """
501
+ return all((u in self and all(x in o for x in self.upper_covers(u))) for u in o)
502
+
503
+ def is_chain_of_poset(self, o, ordered=False):
504
+ """
505
+ Return whether an iterable ``o`` is a chain of ``self``,
506
+ including a check for ``o`` being ordered from smallest
507
+ to largest element if the keyword ``ordered`` is set to
508
+ ``True``.
509
+
510
+ INPUT:
511
+
512
+ - ``o`` -- an iterable (e. g., list, set, or tuple)
513
+ containing some elements of ``self``
514
+
515
+ - ``ordered`` -- a Boolean (default: ``False``); decides
516
+ whether the notion of a chain includes being ordered
517
+
518
+ OUTPUT:
519
+
520
+ If ``ordered`` is set to ``False``, the truth value of
521
+ the following assertion is returned: The subset of ``self``
522
+ formed by the elements of ``o`` is a chain in ``self``.
523
+
524
+ If ``ordered`` is set to ``True``, the truth value of
525
+ the following assertion is returned: Every element of the
526
+ list ``o`` is (strictly!) smaller than its successor in
527
+ ``self``. (This makes no sense if ``ordered`` is a set.)
528
+
529
+ EXAMPLES::
530
+
531
+ sage: P = Poset((divisors(12), attrcall("divides")),
532
+ ....: facade=True, linear_extension=True)
533
+ sage: sorted(P.list())
534
+ [1, 2, 3, 4, 6, 12]
535
+ sage: P.is_chain_of_poset([1, 3])
536
+ True
537
+ sage: P.is_chain_of_poset([3, 1])
538
+ True
539
+ sage: P.is_chain_of_poset([1, 3], ordered=True)
540
+ True
541
+ sage: P.is_chain_of_poset([3, 1], ordered=True)
542
+ False
543
+ sage: P.is_chain_of_poset([])
544
+ True
545
+ sage: P.is_chain_of_poset([], ordered=True)
546
+ True
547
+ sage: P.is_chain_of_poset((2, 12, 6))
548
+ True
549
+ sage: P.is_chain_of_poset((2, 6, 12), ordered=True)
550
+ True
551
+ sage: P.is_chain_of_poset((2, 12, 6), ordered=True)
552
+ False
553
+ sage: P.is_chain_of_poset((2, 12, 6, 3))
554
+ False
555
+ sage: P.is_chain_of_poset((2, 3))
556
+ False
557
+
558
+ sage: Q = Poset({2: [3, 1], 3: [4], 1: [4]})
559
+ sage: Q.is_chain_of_poset([1, 2], ordered=True)
560
+ False
561
+ sage: Q.is_chain_of_poset([1, 2])
562
+ True
563
+ sage: Q.is_chain_of_poset([2, 1], ordered=True)
564
+ True
565
+ sage: Q.is_chain_of_poset([2, 1, 1], ordered=True)
566
+ False
567
+ sage: Q.is_chain_of_poset([3])
568
+ True
569
+ sage: Q.is_chain_of_poset([4, 2, 3])
570
+ True
571
+ sage: Q.is_chain_of_poset([4, 2, 3], ordered=True)
572
+ False
573
+ sage: Q.is_chain_of_poset([2, 3, 4], ordered=True)
574
+ True
575
+
576
+ Examples with infinite posets::
577
+
578
+ sage: from sage.categories.examples.posets import FiniteSetsOrderedByInclusion
579
+ sage: R = FiniteSetsOrderedByInclusion()
580
+ sage: R.is_chain_of_poset([R(set([3, 1, 2])),
581
+ ....: R(set([1, 4])),
582
+ ....: R(set([4, 5]))])
583
+ False
584
+ sage: R.is_chain_of_poset([R(set([3, 1, 2])),
585
+ ....: R(set([1, 2])),
586
+ ....: R(set([1]))], ordered=True)
587
+ False
588
+ sage: R.is_chain_of_poset([R(set([3, 1, 2])),
589
+ ....: R(set([1, 2])), R(set([1]))])
590
+ True
591
+
592
+ sage: from sage.categories.examples.posets import PositiveIntegersOrderedByDivisibilityFacade
593
+ sage: T = PositiveIntegersOrderedByDivisibilityFacade()
594
+ sage: T.is_chain_of_poset((T(3), T(4), T(7)))
595
+ False
596
+ sage: T.is_chain_of_poset((T(3), T(6), T(3)))
597
+ True
598
+ sage: T.is_chain_of_poset((T(3), T(6), T(3)), ordered=True)
599
+ False
600
+ sage: T.is_chain_of_poset((T(3), T(3), T(6)))
601
+ True
602
+ sage: T.is_chain_of_poset((T(3), T(3), T(6)), ordered=True)
603
+ False
604
+ sage: T.is_chain_of_poset((T(3), T(6)), ordered=True)
605
+ True
606
+ sage: T.is_chain_of_poset((), ordered=True)
607
+ True
608
+ sage: T.is_chain_of_poset((T(3),), ordered=True)
609
+ True
610
+ sage: T.is_chain_of_poset((T(q) for q in divisors(27)))
611
+ True
612
+ sage: T.is_chain_of_poset((T(q) for q in divisors(18)))
613
+ False
614
+ """
615
+ list_o = list(o)
616
+ if ordered:
617
+ return all(self.lt(a, b) for a, b in zip(list_o, list_o[1:]))
618
+ else:
619
+ for (i, x) in enumerate(list_o):
620
+ for y in list_o[:i]:
621
+ if (not self.le(x, y)) and (not self.gt(x, y)):
622
+ return False
623
+ return True
624
+
625
+ def is_antichain_of_poset(self, o):
626
+ """
627
+ Return whether an iterable ``o`` is an antichain of
628
+ ``self``.
629
+
630
+ INPUT:
631
+
632
+ - ``o`` -- an iterable (e. g., list, set, or tuple)
633
+ containing some elements of ``self``
634
+
635
+ OUTPUT:
636
+
637
+ ``True`` if the subset of ``self`` consisting of the entries
638
+ of ``o`` is an antichain of ``self``, and ``False`` otherwise.
639
+
640
+ EXAMPLES::
641
+
642
+ sage: P = Poset((divisors(12), attrcall("divides")),
643
+ ....: facade=True, linear_extension=True)
644
+ sage: sorted(P.list())
645
+ [1, 2, 3, 4, 6, 12]
646
+ sage: P.is_antichain_of_poset([1, 3])
647
+ False
648
+ sage: P.is_antichain_of_poset([3, 1])
649
+ False
650
+ sage: P.is_antichain_of_poset([1, 1, 3])
651
+ False
652
+ sage: P.is_antichain_of_poset([])
653
+ True
654
+ sage: P.is_antichain_of_poset([1])
655
+ True
656
+ sage: P.is_antichain_of_poset([1, 1])
657
+ True
658
+ sage: P.is_antichain_of_poset([3, 4])
659
+ True
660
+ sage: P.is_antichain_of_poset([3, 4, 12])
661
+ False
662
+ sage: P.is_antichain_of_poset([6, 4])
663
+ True
664
+ sage: P.is_antichain_of_poset(i for i in divisors(12)
665
+ ....: if (2 < i and i < 6))
666
+ True
667
+ sage: P.is_antichain_of_poset(i for i in divisors(12)
668
+ ....: if (2 <= i and i < 6))
669
+ False
670
+
671
+ sage: Q = Poset({2: [3, 1], 3: [4], 1: [4]})
672
+ sage: Q.is_antichain_of_poset((1, 2))
673
+ False
674
+ sage: Q.is_antichain_of_poset((2, 4))
675
+ False
676
+ sage: Q.is_antichain_of_poset((4, 2))
677
+ False
678
+ sage: Q.is_antichain_of_poset((2, 2))
679
+ True
680
+ sage: Q.is_antichain_of_poset((3, 4))
681
+ False
682
+ sage: Q.is_antichain_of_poset((3, 1))
683
+ True
684
+ sage: Q.is_antichain_of_poset((1, ))
685
+ True
686
+ sage: Q.is_antichain_of_poset(())
687
+ True
688
+
689
+ An infinite poset::
690
+
691
+ sage: from sage.categories.examples.posets import FiniteSetsOrderedByInclusion
692
+ sage: R = FiniteSetsOrderedByInclusion()
693
+ sage: R.is_antichain_of_poset([R(set([3, 1, 2])),
694
+ ....: R(set([1, 4])), R(set([4, 5]))])
695
+ True
696
+ sage: R.is_antichain_of_poset([R(set([3, 1, 2, 4])),
697
+ ....: R(set([1, 4])), R(set([4, 5]))])
698
+ False
699
+ """
700
+ return all(not self.lt(x,y) for x in o for y in o)
701
+
702
+ CartesianProduct = LazyImport(
703
+ 'sage.combinat.posets.cartesian_product', 'CartesianProductPoset')
704
+
705
+ class ElementMethods:
706
+ pass
707
+ # TODO: implement x<y, x<=y, x>y, x>=y appropriately once #10130 is resolved
708
+ #
709
+ # def __le__(self, other):
710
+ # r"""
711
+ # Return whether ``self`` is smaller or equal to ``other``
712
+ # in the poset.
713
+ #
714
+ # EXAMPLES::
715
+ #
716
+ # sage: P = Posets().example(); P
717
+ # An example of poset: sets ordered by inclusion
718
+ # sage: x = P(Set([1,3])); y = P(Set([1,2,3]))
719
+ # sage: x.__le__(y)
720
+ # sage: x <= y
721
+ # """
722
+ # return self.parent().le(self, other)