passagemath-graphs 10.5.43__cp312-cp312-macosx_14_0_arm64.whl → 10.6.1rc2__cp312-cp312-macosx_14_0_arm64.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 (132) hide show
  1. {passagemath_graphs-10.5.43.dist-info → passagemath_graphs-10.6.1rc2.dist-info}/METADATA +5 -6
  2. {passagemath_graphs-10.5.43.dist-info → passagemath_graphs-10.6.1rc2.dist-info}/RECORD +132 -130
  3. sage/combinat/abstract_tree.py +188 -17
  4. sage/combinat/cluster_algebra_quiver/interact.py +1 -2
  5. sage/combinat/cluster_algebra_quiver/mutation_type.py +518 -519
  6. sage/combinat/cluster_algebra_quiver/quiver.py +233 -205
  7. sage/combinat/designs/covering_design.py +2 -6
  8. sage/combinat/designs/database.py +11 -10
  9. sage/combinat/designs/designs_pyx.cpython-312-darwin.so +0 -0
  10. sage/combinat/designs/designs_pyx.pyx +2 -2
  11. sage/combinat/designs/evenly_distributed_sets.cpython-312-darwin.so +0 -0
  12. sage/combinat/designs/evenly_distributed_sets.pyx +4 -4
  13. sage/combinat/designs/gen_quadrangles_with_spread.cpython-312-darwin.so +0 -0
  14. sage/combinat/designs/latin_squares.py +53 -20
  15. sage/combinat/designs/orthogonal_arrays.py +2 -1
  16. sage/combinat/designs/orthogonal_arrays_find_recursive.cpython-312-darwin.so +0 -0
  17. sage/combinat/designs/orthogonal_arrays_find_recursive.pyx +22 -21
  18. sage/combinat/designs/resolvable_bibd.py +191 -157
  19. sage/combinat/designs/subhypergraph_search.cpython-312-darwin.so +0 -0
  20. sage/combinat/designs/subhypergraph_search.pyx +4 -4
  21. sage/combinat/designs/twographs.py +2 -2
  22. sage/combinat/finite_state_machine.py +6 -6
  23. sage/combinat/posets/bubble_shuffle.py +247 -0
  24. sage/combinat/posets/d_complete.py +3 -3
  25. sage/combinat/posets/elements.py +3 -3
  26. sage/combinat/posets/hasse_cython.cpython-312-darwin.so +0 -0
  27. sage/combinat/posets/hasse_cython.pyx +1 -1
  28. sage/combinat/posets/hasse_diagram.py +16 -22
  29. sage/combinat/posets/hochschild_lattice.py +158 -0
  30. sage/combinat/posets/incidence_algebras.py +14 -16
  31. sage/combinat/posets/lattices.py +51 -53
  32. sage/combinat/posets/linear_extension_iterator.cpython-312-darwin.so +0 -0
  33. sage/combinat/posets/linear_extensions.py +10 -12
  34. sage/combinat/posets/moebius_algebra.py +4 -4
  35. sage/combinat/posets/poset_examples.py +70 -23
  36. sage/combinat/posets/posets.py +294 -103
  37. sage/databases/knotinfo_db.py +2 -1
  38. sage/graphs/asteroidal_triples.cpython-312-darwin.so +0 -0
  39. sage/graphs/asteroidal_triples.pyx +24 -3
  40. sage/graphs/base/boost_graph.cpython-312-darwin.so +0 -0
  41. sage/graphs/base/boost_graph.pxd +3 -3
  42. sage/graphs/base/c_graph.cpython-312-darwin.so +0 -0
  43. sage/graphs/base/c_graph.pyx +1 -1
  44. sage/graphs/base/dense_graph.cpython-312-darwin.so +0 -0
  45. sage/graphs/base/dense_graph.pxd +5 -3
  46. sage/graphs/base/dense_graph.pyx +44 -0
  47. sage/graphs/base/graph_backends.cpython-312-darwin.so +0 -0
  48. sage/graphs/base/sparse_graph.cpython-312-darwin.so +0 -0
  49. sage/graphs/base/static_dense_graph.cpython-312-darwin.so +0 -0
  50. sage/graphs/base/static_sparse_backend.cpython-312-darwin.so +0 -0
  51. sage/graphs/base/static_sparse_backend.pyx +8 -5
  52. sage/graphs/base/static_sparse_graph.cpython-312-darwin.so +0 -0
  53. sage/graphs/base/static_sparse_graph.pyx +86 -15
  54. sage/graphs/bipartite_graph.py +59 -36
  55. sage/graphs/centrality.cpython-312-darwin.so +0 -0
  56. sage/graphs/centrality.pyx +82 -9
  57. sage/graphs/cographs.py +1 -1
  58. sage/graphs/comparability.cpython-312-darwin.so +0 -0
  59. sage/graphs/comparability.pyx +64 -26
  60. sage/graphs/connectivity.cpython-312-darwin.so +0 -0
  61. sage/graphs/convexity_properties.cpython-312-darwin.so +0 -0
  62. sage/graphs/convexity_properties.pyx +52 -9
  63. sage/graphs/digraph.py +439 -95
  64. sage/graphs/digraph_generators.py +174 -102
  65. sage/graphs/distances_all_pairs.cpython-312-darwin.so +0 -0
  66. sage/graphs/dot2tex_utils.py +1 -1
  67. sage/graphs/edge_connectivity.cpython-312-darwin.so +0 -0
  68. sage/graphs/generators/basic.py +1 -1
  69. sage/graphs/generators/distance_regular.cpython-312-darwin.so +0 -0
  70. sage/graphs/generators/distance_regular.pyx +1 -1
  71. sage/graphs/generators/families.py +37 -27
  72. sage/graphs/generators/random.py +2 -2
  73. sage/graphs/generators/smallgraphs.py +3 -3
  74. sage/graphs/generic_graph.py +558 -86
  75. sage/graphs/generic_graph_pyx.cpython-312-darwin.so +0 -0
  76. sage/graphs/generic_graph_pyx.pyx +58 -11
  77. sage/graphs/genus.cpython-312-darwin.so +0 -0
  78. sage/graphs/genus.pyx +3 -4
  79. sage/graphs/graph.py +291 -8
  80. sage/graphs/graph_coloring.cpython-312-darwin.so +0 -0
  81. sage/graphs/graph_database.py +67 -12
  82. sage/graphs/graph_decompositions/bandwidth.cpython-312-darwin.so +0 -0
  83. sage/graphs/graph_decompositions/clique_separators.cpython-312-darwin.so +0 -0
  84. sage/graphs/graph_decompositions/clique_separators.pyx +24 -3
  85. sage/graphs/graph_decompositions/cutwidth.cpython-312-darwin.so +0 -0
  86. sage/graphs/graph_decompositions/fast_digraph.cpython-312-darwin.so +0 -0
  87. sage/graphs/graph_decompositions/fast_digraph.pyx +1 -1
  88. sage/graphs/graph_decompositions/graph_products.cpython-312-darwin.so +0 -0
  89. sage/graphs/graph_decompositions/graph_products.pyx +67 -21
  90. sage/graphs/graph_decompositions/modular_decomposition.cpython-312-darwin.so +0 -0
  91. sage/graphs/graph_decompositions/slice_decomposition.cpython-312-darwin.so +0 -0
  92. sage/graphs/graph_decompositions/slice_decomposition.pyx +34 -8
  93. sage/graphs/graph_decompositions/tree_decomposition.cpython-312-darwin.so +0 -0
  94. sage/graphs/graph_decompositions/vertex_separation.cpython-312-darwin.so +0 -0
  95. sage/graphs/graph_generators.py +45 -32
  96. sage/graphs/graph_generators_pyx.cpython-312-darwin.so +0 -0
  97. sage/graphs/graph_generators_pyx.pyx +15 -15
  98. sage/graphs/graph_latex.py +1 -1
  99. sage/graphs/graph_list.py +52 -9
  100. sage/graphs/graph_plot.py +7 -0
  101. sage/graphs/hyperbolicity.cpython-312-darwin.so +0 -0
  102. sage/graphs/hyperbolicity.pyx +2 -0
  103. sage/graphs/independent_sets.cpython-312-darwin.so +0 -0
  104. sage/graphs/isoperimetric_inequalities.cpython-312-darwin.so +0 -0
  105. sage/graphs/isoperimetric_inequalities.pyx +42 -6
  106. sage/graphs/line_graph.cpython-312-darwin.so +0 -0
  107. sage/graphs/line_graph.pyx +153 -37
  108. sage/graphs/matching_covered_graph.py +84 -60
  109. sage/graphs/orientations.py +3 -18
  110. sage/graphs/path_enumeration.cpython-312-darwin.so +0 -0
  111. sage/graphs/path_enumeration.pyx +2 -2
  112. sage/graphs/spanning_tree.cpython-312-darwin.so +0 -0
  113. sage/graphs/strongly_regular_db.cpython-312-darwin.so +0 -0
  114. sage/graphs/strongly_regular_db.pyx +15 -15
  115. sage/graphs/traversals.cpython-312-darwin.so +0 -0
  116. sage/graphs/traversals.pyx +13 -12
  117. sage/graphs/trees.cpython-312-darwin.so +0 -0
  118. sage/graphs/tutte_polynomial.py +1 -1
  119. sage/graphs/views.cpython-312-darwin.so +0 -0
  120. sage/graphs/weakly_chordal.cpython-312-darwin.so +0 -0
  121. sage/graphs/weakly_chordal.pyx +50 -8
  122. sage/groups/perm_gps/partn_ref/refinement_graphs.cpython-312-darwin.so +0 -0
  123. sage/knots/free_knotinfo_monoid.py +3 -3
  124. sage/knots/knotinfo.py +102 -82
  125. sage/knots/link.py +72 -39
  126. sage/topology/cubical_complex.py +4 -5
  127. sage/topology/delta_complex.py +4 -4
  128. sage/topology/simplicial_complex.py +0 -1
  129. sage/topology/simplicial_complex_catalog.py +6 -0
  130. sage/topology/simplicial_complex_examples.py +4 -16
  131. {passagemath_graphs-10.5.43.dist-info → passagemath_graphs-10.6.1rc2.dist-info}/WHEEL +0 -0
  132. {passagemath_graphs-10.5.43.dist-info → passagemath_graphs-10.6.1rc2.dist-info}/top_level.txt +0 -0
@@ -30,15 +30,17 @@ The infinite set of all posets can be used to find minimal examples::
30
30
 
31
31
  :meth:`~Posets.AntichainPoset` | Return an antichain on `n` elements.
32
32
  :meth:`~Posets.BooleanLattice` | Return the Boolean lattice on `2^n` elements.
33
+ :meth:`~Posets.BubblePoset` | Return the Bubble lattice for `(m,n)`.
33
34
  :meth:`~Posets.ChainPoset` | Return a chain on `n` elements.
34
35
  :meth:`~Posets.Crown` | Return the crown poset on `2n` elements.
35
36
  :meth:`~Posets.DexterSemilattice` | Return the Dexter semilattice.
36
37
  :meth:`~Posets.DiamondPoset` | Return the lattice of rank two on `n` elements.
37
38
  :meth:`~Posets.DivisorLattice` | Return the divisor lattice of an integer.
38
39
  :meth:`~Posets.DoubleTailedDiamond` | Return the double tailed diamond poset on `2n + 2` elements.
40
+ :meth:`~Posets.HochschildLattice` | Return the Hochschild lattice for `n`.
39
41
  :meth:`~Posets.IntegerCompositions` | Return the poset of integer compositions of `n`.
40
42
  :meth:`~Posets.IntegerPartitions` | Return the poset of integer partitions of ``n``.
41
- :meth:`~Posets.IntegerPartitionsDominanceOrder` | Return the lattice of integer partitions on the integer `n` ordered by dominance.
43
+ :meth:`~Posets.IntegerPartitionsDominanceOrder` | Return the lattice of integer partitions of the integer `n` ordered by dominance.
42
44
  :meth:`~Posets.MobilePoset` | Return the mobile poset formed by the `ribbon` with `hangers` below and an `anchor` above.
43
45
  :meth:`~Posets.NoncrossingPartitions` | Return the poset of noncrossing partitions of a finite Coxeter group ``W``.
44
46
  :meth:`~Posets.PentagonPoset` | Return the Pentagon poset.
@@ -53,6 +55,7 @@ The infinite set of all posets can be used to find minimal examples::
53
55
  :meth:`~Posets.RestrictedIntegerPartitions` | Return the poset of integer partitions of `n`, ordered by restricted refinement.
54
56
  :meth:`~Posets.SetPartitions` | Return the poset of set partitions of the set `\{1,\dots,n\}`.
55
57
  :meth:`~Posets.ShardPoset` | Return the shard intersection order.
58
+ :meth:`~Posets.ShufflePoset` | Return the Shuffle lattice for `(m,n)`.
56
59
  :meth:`~Posets.SSTPoset` | Return the poset on semistandard tableaux of shape `s` and largest entry `f` that is ordered by componentwise comparison.
57
60
  :meth:`~Posets.StandardExample` | Return the standard example of a poset with dimension `n`.
58
61
  :meth:`~Posets.SymmetricGroupAbsoluteOrderPoset` | The poset of permutations with respect to absolute order.
@@ -100,6 +103,7 @@ from sage.misc.classcall_metaclass import ClasscallMetaclass
100
103
  import sage.categories.posets
101
104
  from sage.combinat.permutation import Permutations, Permutation, to_standard
102
105
  from sage.combinat.posets.posets import Poset, FinitePoset, FinitePosets_n
106
+ from sage.combinat.posets import bubble_shuffle, hochschild_lattice
103
107
  from sage.combinat.posets.d_complete import DCompletePoset
104
108
  from sage.combinat.posets.mobile import MobilePoset as Mobile
105
109
  from sage.combinat.posets.lattices import (LatticePoset, MeetSemilattice,
@@ -281,6 +285,12 @@ class Posets(metaclass=ClasscallMetaclass):
281
285
  category=FiniteLatticePosets(),
282
286
  facade=facade)
283
287
 
288
+ BubblePoset = staticmethod(bubble_shuffle.BubblePoset)
289
+
290
+ ShufflePoset = staticmethod(bubble_shuffle.ShufflePoset)
291
+
292
+ HochschildLattice = staticmethod(hochschild_lattice.hochschild_lattice)
293
+
284
294
  @staticmethod
285
295
  def ChainPoset(n, facade=None):
286
296
  r"""
@@ -465,11 +475,11 @@ class Posets(metaclass=ClasscallMetaclass):
465
475
 
466
476
  @staticmethod
467
477
  def DivisorLattice(n, facade=None):
468
- """
478
+ r"""
469
479
  Return the divisor lattice of an integer.
470
480
 
471
- Elements of the lattice are divisors of `n` and `x < y` in the
472
- lattice if `x` divides `y`.
481
+ Elements of the lattice are divisors of `n`, and we have
482
+ `x \leq y` in the lattice if `x` divides `y`.
473
483
 
474
484
  INPUT:
475
485
 
@@ -502,15 +512,52 @@ class Posets(metaclass=ClasscallMetaclass):
502
512
  category=FiniteLatticePosets())
503
513
 
504
514
  @staticmethod
505
- def IntegerCompositions(n):
515
+ def HessenbergPoset(H):
516
+ r"""
517
+ Return the poset associated to a Hessenberg function ``H``.
518
+
519
+ A *Hessenberg function* (of length `n`) is a function `H: \{1,\ldots,n\}
520
+ \to \{1,\ldots,n\}` such that `\max(i, H(i-1)) \leq H(i) \leq n` for all
521
+ `i` (where `H(0) = 0` by convention). The corresponding poset is given
522
+ by `i < j` (in the poset) if and only if `H(i) < j` (as integers).
523
+ These posets correspond to the natural unit interval order posets.
524
+
525
+ INPUT:
526
+
527
+ - ``H`` -- list of the Hessenberg function values
528
+ (without `H(0)`)
529
+
530
+ EXAMPLES::
531
+
532
+ sage: P = posets.HessenbergPoset([2, 3, 5, 5, 5]); P
533
+ Finite poset containing 5 elements
534
+ sage: P.cover_relations()
535
+ [[2, 4], [2, 5], [1, 3], [1, 4], [1, 5]]
536
+
537
+ TESTS::
538
+
539
+ sage: P = posets.HessenbergPoset([2, 2, 6, 4, 5, 6])
540
+ Traceback (most recent call last):
541
+ ...
542
+ ValueError: [2, 2, 6, 4, 5, 6] is not a Hessenberg function
543
+ sage: P = posets.HessenbergPoset([]); P
544
+ Finite poset containing 0 elements
506
545
  """
546
+ n = len(H)
547
+ if not all(max(i+1, H[i-1]) <= H[i] for i in range(1, n)) or 0 < n < H[-1]:
548
+ raise ValueError(f"{H} is not a Hessenberg function")
549
+ return Poset((tuple(range(1, n+1)), lambda i, j: H[i-1] < j))
550
+
551
+ @staticmethod
552
+ def IntegerCompositions(n):
553
+ r"""
507
554
  Return the poset of integer compositions of the integer ``n``.
508
555
 
509
556
  A composition of a positive integer `n` is a list of positive
510
557
  integers that sum to `n`. The order is reverse refinement:
511
- `[p_1,p_2,...,p_l] < [q_1,q_2,...,q_m]` if `q` consists
512
- of an integer composition of `p_1`, followed by an integer
513
- composition of `p_2`, and so on.
558
+ `p = [p_1,p_2,...,p_l] \leq q = [q_1,q_2,...,q_m]` if `q`
559
+ consists of an integer composition of `p_1`, followed by an
560
+ integer composition of `p_2`, and so on.
514
561
 
515
562
  EXAMPLES::
516
563
 
@@ -527,7 +574,7 @@ class Posets(metaclass=ClasscallMetaclass):
527
574
  @staticmethod
528
575
  def IntegerPartitions(n):
529
576
  """
530
- Return the poset of integer partitions on the integer ``n``.
577
+ Return the poset of integer partitions of the integer ``n``.
531
578
 
532
579
  A partition of a positive integer `n` is a non-increasing list
533
580
  of positive integers that sum to `n`. If `p` and `q` are
@@ -566,7 +613,7 @@ class Posets(metaclass=ClasscallMetaclass):
566
613
  @staticmethod
567
614
  def RestrictedIntegerPartitions(n):
568
615
  """
569
- Return the poset of integer partitions on the integer `n`
616
+ Return the poset of integer partitions of the integer `n`
570
617
  ordered by restricted refinement.
571
618
 
572
619
  That is, if `p` and `q` are integer partitions of `n`, then
@@ -605,12 +652,12 @@ class Posets(metaclass=ClasscallMetaclass):
605
652
  @staticmethod
606
653
  def IntegerPartitionsDominanceOrder(n):
607
654
  r"""
608
- Return the lattice of integer partitions on the integer `n`
655
+ Return the lattice of integer partitions of the integer `n`
609
656
  ordered by dominance.
610
657
 
611
658
  That is, if `p=(p_1,\ldots,p_i)` and `q=(q_1,\ldots,q_j)` are
612
- integer partitions of `n`, then `p` is greater than `q` if and
613
- only if `p_1+\cdots+p_k > q_1+\cdots+q_k` for all `k`.
659
+ integer partitions of `n`, then `p \geq q` if and
660
+ only if `p_1+\cdots+p_k \geq q_1+\cdots+q_k` for all `k`.
614
661
 
615
662
  INPUT:
616
663
 
@@ -1433,16 +1480,16 @@ class Posets(metaclass=ClasscallMetaclass):
1433
1480
  return ((a[0] == b[0] + 1 and a[1] == b[1]) or
1434
1481
  (a[1] == b[1] + 1 and a[0] == b[0]))
1435
1482
  return JoinSemilattice((lam.cells(), cell_geq), cover_relations=True)
1436
- else:
1437
- def cell_leq(a, b):
1438
- """
1439
- Nested function that returns ``True`` if the cell `a` is
1440
- to the left or above
1441
- the cell `b` in the (English) Young diagram.
1442
- """
1443
- return ((a[0] == b[0] - 1 and a[1] == b[1]) or
1444
- (a[1] == b[1] - 1 and a[0] == b[0]))
1445
- return MeetSemilattice((lam.cells(), cell_leq), cover_relations=True)
1483
+
1484
+ def cell_leq(a, b):
1485
+ """
1486
+ Nested function that returns ``True`` if the cell `a` is
1487
+ to the left or above
1488
+ the cell `b` in the (English) Young diagram.
1489
+ """
1490
+ return ((a[0] == b[0] - 1 and a[1] == b[1]) or
1491
+ (a[1] == b[1] - 1 and a[0] == b[0]))
1492
+ return MeetSemilattice((lam.cells(), cell_leq), cover_relations=True)
1446
1493
 
1447
1494
  @staticmethod
1448
1495
  def YoungsLattice(n):