Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sage.combinat: Update # needs #36619

Merged
merged 27 commits into from
Nov 5, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
a4513e8
More # optional
mkoeppe Jun 11, 2023
0c7ac91
src/sage/combinat/crystals/affine_factorization.py: Fix import
mkoeppe Jun 17, 2023
f5342b6
src/sage/combinat/crystals/littelmann_path.py: Fix import
mkoeppe Jun 17, 2023
d145d3e
./sage -fixdoctests --only-tags src/sage/combinat/permutation.py
mkoeppe Jun 30, 2023
2a06034
Update # optional / # needs
mkoeppe Jul 1, 2023
c3f3140
sage.combinat: Update # optional / # needs
mkoeppe Jul 2, 2023
a770279
./sage -fixdoctests --distribution sagemath-categories --only-tags sr…
mkoeppe Jul 13, 2023
d804ab1
Update # needs
mkoeppe Jul 13, 2023
6367a85
sage.combinat: Update # needs
mkoeppe Jul 14, 2023
ba19b1e
Update # needs
mkoeppe Jul 16, 2023
7a99364
sage.combinat: Update # needs
mkoeppe Aug 7, 2023
11f2bc3
src/sage/combinat: sage -fixdoctests --only-tags
mkoeppe Aug 8, 2023
d45c3fa
sage.combinat: Update # needs
mkoeppe Aug 27, 2023
d1612b3
sage.combinat: Update # needs
mkoeppe Sep 3, 2023
3d26a52
sage.combinat: Update # needs
mkoeppe Sep 9, 2023
83ed6a3
sage.combinat: Update # needs
mkoeppe Sep 9, 2023
c323d79
src/sage/combinat/symmetric_group_algebra.py: Use lazy_import
mkoeppe Sep 10, 2023
c9a4c5b
sage.combinat: Update # needs
mkoeppe Sep 10, 2023
9c40296
sage.combinat: Update # needs
mkoeppe Sep 16, 2023
e9e8859
sage.combinat: Update # needs
mkoeppe Sep 23, 2023
f18a745
sage.combinat: Use more block tags
mkoeppe Nov 1, 2023
da93fef
sage.combinat: Use even more block tags
mkoeppe Nov 1, 2023
59b2fbe
src/sage/combinat/permutation.py: Fix up cherry-pick
mkoeppe Nov 1, 2023
9d26e03
src/sage/combinat/path_tableaux/frieze.py: Fix doctest fix
mkoeppe Nov 1, 2023
108a6f8
src/sage/combinat/plane_partition.py: Fix cherry pick
mkoeppe Nov 1, 2023
a5e3437
src/sage/combinat/subword_complex*.p*: Fix placement of '# optional'
mkoeppe Nov 1, 2023
5192865
src/sage/combinat/partition.py: Reorder some doctests for more block …
mkoeppe Nov 2, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/sage/combinat/backtrack.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ def __iter__(self):

sage: from sage.combinat.permutation import PatternAvoider
sage: p = PatternAvoider(Permutations(4), [[1,3,2]])
sage: len(list(p)) # optional - sage.combinat
sage: len(list(p)) # needs sage.combinat
14
"""
# Initialize the stack of generators with the initial data.
Expand Down
7 changes: 4 additions & 3 deletions src/sage/combinat/baxter_permutations.py
Original file line number Diff line number Diff line change
Expand Up @@ -332,11 +332,12 @@ def to_pair_of_twin_binary_trees(self, p):

EXAMPLES::

sage: BaxterPermutations().to_pair_of_twin_binary_trees(Permutation([]))
sage: BP = BaxterPermutations()
sage: BP.to_pair_of_twin_binary_trees(Permutation([])) # needs sage.graphs
(., .)
sage: BaxterPermutations().to_pair_of_twin_binary_trees(Permutation([1, 2, 3]))
sage: BP.to_pair_of_twin_binary_trees(Permutation([1, 2, 3])) # needs sage.graphs
(1[., 2[., 3[., .]]], 3[2[1[., .], .], .])
sage: BaxterPermutations().to_pair_of_twin_binary_trees(Permutation([3, 4, 1, 2]))
sage: BP.to_pair_of_twin_binary_trees(Permutation([3, 4, 1, 2])) # needs sage.graphs
(3[1[., 2[., .]], 4[., .]], 2[1[., .], 4[3[., .], .]])
"""
from sage.combinat.binary_tree import LabelledBinaryTree
Expand Down
14 changes: 7 additions & 7 deletions src/sage/combinat/binary_recurrence_sequences.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
True
sage: T.is_geometric()
True
sage: T.pthpowers(7, 10**30) # optional - sage.symbolic
sage: T.pthpowers(7, 10**30) # needs sage.symbolic
Traceback (most recent call last):
...
ValueError: the degenerate binary recurrence sequence is geometric or quasigeometric
Expand Down Expand Up @@ -548,7 +548,7 @@ def pthpowers(self, p, Bound):
True
sage: T.is_geometric()
True
sage: T.pthpowers(7, 10**30) # optional - sage.symbolic
sage: T.pthpowers(7, 10**30) # needs sage.symbolic
Traceback (most recent call last):
...
ValueError: the degenerate binary recurrence sequence is geometric or
Expand All @@ -559,7 +559,7 @@ def pthpowers(self, p, Bound):
[2, 2, 2^3, 2^5, 2^7, 2^9, 2^11, 2^13, 2^15, 2^17]
sage: L.is_quasigeometric()
True
sage: L.pthpowers(2, 10**30) # optional - sage.symbolic
sage: L.pthpowers(2, 10**30) # needs sage.symbolic
[]

.. NOTE::
Expand Down Expand Up @@ -1057,7 +1057,7 @@ def _estimated_time(M2, M1, length, p):
EXAMPLES::

sage: from sage.combinat.binary_recurrence_sequences import _estimated_time
sage: _estimated_time(2**4*3**2*5*7*11*13*17, 2**4*3**2*5*7*11*13, 20, 7) # optional - sage.symbolic
sage: _estimated_time(2**4*3**2*5*7*11*13*17, 2**4*3**2*5*7*11*13, 20, 7) # needs sage.symbolic
106.211159309421

"""
Expand Down Expand Up @@ -1093,7 +1093,7 @@ def _find_cong1(p, R, ell):
EXAMPLES::

sage: R = BinaryRecurrenceSequence(1,1)
sage: sage.combinat.binary_recurrence_sequences._find_cong1(7, R, 29) # optional - sage.rings.finite_rings
sage: sage.combinat.binary_recurrence_sequences._find_cong1(7, R, 29) # needs sage.rings.finite_rings
([0, 1, 2, 12, 13], 14)
"""
F = GF(ell)
Expand Down Expand Up @@ -1143,9 +1143,9 @@ def _is_p_power(a, p):

EXAMPLES::

sage: sage.combinat.binary_recurrence_sequences._is_p_power(2**7, 7) # optional - sage.symbolic
sage: sage.combinat.binary_recurrence_sequences._is_p_power(2**7, 7) # needs sage.symbolic
True
sage: sage.combinat.binary_recurrence_sequences._is_p_power(2**7*3**2, 7) # optional - sage.symbolic
sage: sage.combinat.binary_recurrence_sequences._is_p_power(2**7*3**2, 7) # needs sage.symbolic
False
"""
return int(a**(1/p))**p == a
Expand Down
148 changes: 77 additions & 71 deletions src/sage/combinat/binary_tree.py

Large diffs are not rendered by default.

24 changes: 12 additions & 12 deletions src/sage/combinat/cartesian_product.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,27 +51,27 @@ class for ``cartesian_product``;

sage: F1 = ['a', 'b']
sage: F2 = [1, 2, 3, 4]
sage: F3 = Permutations(3) # optional - sage.combinat
sage: F3 = Permutations(3)
sage: from sage.combinat.cartesian_product import CartesianProduct_iters
sage: C = CartesianProduct_iters(F1, F2, F3) # optional - sage.combinat
sage: c = cartesian_product([F1, F2, F3]) # optional - sage.combinat
sage: C = CartesianProduct_iters(F1, F2, F3)
sage: c = cartesian_product([F1, F2, F3])

sage: type(C.an_element()) # optional - sage.combinat
sage: type(C.an_element())
<class 'list'>
sage: type(c.an_element()) # optional - sage.combinat
sage: type(c.an_element())
<class 'sage.sets.cartesian_product.CartesianProduct_with_category.element_class'>

sage: l = ['a', 1, Permutation([3,2,1])] # optional - sage.combinat
sage: l in C # optional - sage.combinat
sage: l = ['a', 1, Permutation([3,2,1])]
sage: l in C
True
sage: l in c # optional - sage.combinat
sage: l in c
False
sage: elt = c(l) # optional - sage.combinat
sage: elt # optional - sage.combinat
sage: elt = c(l)
sage: elt
('a', 1, [3, 2, 1])
sage: elt in c # optional - sage.combinat
sage: elt in c
True
sage: elt.parent() is c # optional - sage.combinat
sage: elt.parent() is c
True
"""

Expand Down
51 changes: 27 additions & 24 deletions src/sage/combinat/cluster_algebra_quiver/mutation_class.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,10 +76,10 @@ def _digraph_mutate(dg, k, frozen=None):

sage: from sage.combinat.cluster_algebra_quiver.mutation_class import _digraph_mutate
sage: from sage.combinat.cluster_algebra_quiver.quiver import ClusterQuiver
sage: dg = ClusterQuiver(['A',4]).digraph()
sage: dg.edges(sort=True)
sage: dg = ClusterQuiver(['A',4]).digraph() # needs sage.modules
sage: dg.edges(sort=True) # needs sage.modules
[(0, 1, (1, -1)), (2, 1, (1, -1)), (2, 3, (1, -1))]
sage: _digraph_mutate(dg,2).edges(sort=True)
sage: _digraph_mutate(dg,2).edges(sort=True) # needs sage.modules
[(0, 1, (1, -1)), (1, 2, (1, -1)), (3, 2, (1, -1))]

TESTS::
Expand Down Expand Up @@ -208,31 +208,31 @@ def _dg_canonical_form(dg, frozen=None):
EXAMPLES::

sage: from sage.combinat.cluster_algebra_quiver.mutation_class import _dg_canonical_form
sage: dg = ClusterQuiver(['B',4]).digraph(); dg.edges(sort=True)
sage: dg = ClusterQuiver(['B',4]).digraph(); dg.edges(sort=True) # needs sage.modules
[(0, 1, (1, -1)), (2, 1, (1, -1)), (2, 3, (1, -2))]
sage: _dg_canonical_form(dg); dg.edges(sort=True)
sage: _dg_canonical_form(dg); dg.edges(sort=True) # needs sage.modules
({0: 0, 1: 3, 2: 1, 3: 2}, [[0], [3], [1], [2]])
[(0, 3, (1, -1)), (1, 2, (1, -2)), (1, 3, (1, -1))]

TESTS::

sage: dg2 = ClusterQuiver(DiGraph({0:[1,2]})).digraph()
sage: _dg_canonical_form(dg2); dg2.edges(sort=True)
sage: dg2 = ClusterQuiver(DiGraph({0:[1,2]})).digraph() # needs sage.modules
sage: _dg_canonical_form(dg2); dg2.edges(sort=True) # needs sage.modules
({0: 0, 1: 1, 2: 2}, [[0], [1, 2]])
[(0, 1, (1, -1)), (0, 2, (1, -1))]

sage: dg2 = ClusterQuiver(DiGraph({0:[1,2]})).digraph()
sage: _dg_canonical_form(dg2, frozen=[0]); dg2.edges(sort=True)
sage: dg2 = ClusterQuiver(DiGraph({0:[1,2]})).digraph() # needs sage.modules
sage: _dg_canonical_form(dg2, frozen=[0]); dg2.edges(sort=True) # needs sage.modules
({0: 2, 1: 0, 2: 1}, [[2], [0, 1]])
[(2, 0, (1, -1)), (2, 1, (1, -1))]

sage: dg3 = ClusterQuiver(DiGraph({0:[1,2],1:[3]})).digraph()
sage: _dg_canonical_form(dg3, frozen=[0,3]); dg3.edges(sort=True)
sage: dg3 = ClusterQuiver(DiGraph({0:[1,2],1:[3]})).digraph() # needs sage.modules
sage: _dg_canonical_form(dg3, frozen=[0,3]); dg3.edges(sort=True) # needs sage.modules
({0: 2, 1: 1, 2: 0, 3: 3}, [[2], [1], [0], [3]])
[(1, 3, (1, -1)), (2, 0, (1, -1)), (2, 1, (1, -1))]

sage: dg3 = ClusterQuiver(DiGraph({2:[1,3],1:[0],3:[4]})).digraph()
sage: _dg_canonical_form(dg3, frozen=[4,0]); dg3.edges(sort=True)
sage: dg3 = ClusterQuiver(DiGraph({2:[1,3],1:[0],3:[4]})).digraph() # needs sage.modules
sage: _dg_canonical_form(dg3, frozen=[4,0]); dg3.edges(sort=True) # needs sage.modules
({0: 4, 1: 1, 2: 0, 3: 2, 4: 3}, [[4, 3], [1, 2], [0]])
[(0, 1, (1, -1)), (0, 2, (1, -1)), (1, 4, (1, -1)), (2, 3, (1, -1))]
"""
Expand Down Expand Up @@ -292,6 +292,7 @@ def _mutation_class_iter( dg, n, m, depth=infinity, return_dig6=False, show_dept

EXAMPLES::

sage: # needs sage.modules
sage: from sage.combinat.cluster_algebra_quiver.mutation_class import _mutation_class_iter
sage: from sage.combinat.cluster_algebra_quiver.quiver import ClusterQuiver
sage: dg = ClusterQuiver(['A',[1,2],1]).digraph()
Expand Down Expand Up @@ -392,8 +393,8 @@ def _digraph_to_dig6( dg, hashable=False ):

sage: from sage.combinat.cluster_algebra_quiver.mutation_class import _digraph_to_dig6
sage: from sage.combinat.cluster_algebra_quiver.quiver import ClusterQuiver
sage: dg = ClusterQuiver(['A',4]).digraph()
sage: _digraph_to_dig6(dg)
sage: dg = ClusterQuiver(['A',4]).digraph() # needs sage.modules
sage: _digraph_to_dig6(dg) # needs sage.modules
('COD?', {})
"""
dig6 = dg.dig6_string()
Expand All @@ -416,6 +417,7 @@ def _dig6_to_digraph( dig6 ):

EXAMPLES::

sage: # needs sage.modules
sage: from sage.combinat.cluster_algebra_quiver.mutation_class import _digraph_to_dig6
sage: from sage.combinat.cluster_algebra_quiver.mutation_class import _dig6_to_digraph
sage: from sage.combinat.cluster_algebra_quiver.quiver import ClusterQuiver
Expand Down Expand Up @@ -451,8 +453,8 @@ def _dig6_to_matrix( dig6 ):

sage: from sage.combinat.cluster_algebra_quiver.mutation_class import _digraph_to_dig6, _dig6_to_matrix
sage: from sage.combinat.cluster_algebra_quiver.quiver import ClusterQuiver
sage: dg = ClusterQuiver(['A',4]).digraph()
sage: data = _digraph_to_dig6(dg)
sage: dg = ClusterQuiver(['A',4]).digraph() # needs sage.modules
sage: data = _digraph_to_dig6(dg) # needs sage.modules
sage: _dig6_to_matrix(data) # needs sage.modules
[ 0 1 0 0]
[-1 0 -1 0]
Expand All @@ -474,14 +476,15 @@ def _dg_is_sink_source( dg, v ):

EXAMPLES::

sage: # needs sage.modules
sage: from sage.combinat.cluster_algebra_quiver.mutation_class import _dg_is_sink_source
sage: from sage.combinat.cluster_algebra_quiver.quiver import ClusterQuiver
sage: dg = ClusterQuiver(['A',[1,2],1]).digraph()
sage: _dg_is_sink_source(dg, 0 )
sage: _dg_is_sink_source(dg, 0)
True
sage: _dg_is_sink_source(dg, 1 )
sage: _dg_is_sink_source(dg, 1)
True
sage: _dg_is_sink_source(dg, 2 )
sage: _dg_is_sink_source(dg, 2)
False
"""
in_edges = [ edge for edge in dg._backend.iterator_in_edges([v],True) ]
Expand All @@ -504,9 +507,9 @@ def _graph_without_edge_labels(dg, vertices):

sage: from sage.combinat.cluster_algebra_quiver.mutation_class import _graph_without_edge_labels
sage: from sage.combinat.cluster_algebra_quiver.quiver import ClusterQuiver
sage: dg = ClusterQuiver(['B',4]).digraph(); dg.edges(sort=True)
sage: dg = ClusterQuiver(['B',4]).digraph(); dg.edges(sort=True) # needs sage.modules
[(0, 1, (1, -1)), (2, 1, (1, -1)), (2, 3, (1, -2))]
sage: _graph_without_edge_labels(dg, range(4)); dg.edges(sort=True)
sage: _graph_without_edge_labels(dg, range(4)); dg.edges(sort=True) # needs sage.modules
([[4]], ((1, -2),))
[(0, 1, (1, -1)), (2, 1, (1, -1)), (2, 4, (1, -1)), (4, 3, (1, -1))]
"""
Expand Down Expand Up @@ -542,10 +545,10 @@ def _has_two_cycles( dg ):
EXAMPLES::

sage: from sage.combinat.cluster_algebra_quiver.mutation_class import _has_two_cycles
sage: _has_two_cycles( DiGraph([[0,1],[1,0]]))
sage: _has_two_cycles(DiGraph([[0,1],[1,0]]))
True
sage: from sage.combinat.cluster_algebra_quiver.quiver import ClusterQuiver
sage: _has_two_cycles( ClusterQuiver(['A',3]).digraph() )
sage: _has_two_cycles(ClusterQuiver(['A',3]).digraph()) # needs sage.modules
False
"""
edge_set = dg.edges(sort=True, labels=False)
Expand Down
15 changes: 10 additions & 5 deletions src/sage/combinat/cluster_algebra_quiver/mutation_type.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,14 +55,15 @@ def is_mutation_finite(M, nr_of_checks=None):

sage: from sage.combinat.cluster_algebra_quiver.mutation_type import is_mutation_finite

sage: Q = ClusterQuiver(['A',10])
sage: Q = ClusterQuiver(['A',10]) # needs sage.modules
sage: M = Q.b_matrix() # needs sage.modules
sage: is_mutation_finite(M) # needs sage.modules
(True, None)

sage: # needs sage.modules
sage: Q = ClusterQuiver([(0,1),(1,2),(2,3),(3,4),(4,5),(5,6),(6,7),(7,8),(2,9)])
sage: M = Q.b_matrix() # needs sage.modules
sage: is_mutation_finite(M) # random # needs sage.modules
sage: M = Q.b_matrix()
sage: is_mutation_finite(M) # random
(False, [9, 6, 9, 8, 9, 4, 0, 4, 5, 2, 1, 0, 1, 0, 7, 1, 9, 2, 5, 7, 8, 6, 3, 0, 2, 5, 4, 2, 6, 9, 2, 7, 3, 5, 3, 7, 9, 5, 9, 0, 2, 7, 9, 2, 4, 2, 1, 6, 9, 4, 3, 5, 0, 8, 2, 9, 5, 3, 7, 0, 1, 8, 3, 7, 2, 7, 3, 4, 8, 0, 4, 9, 5, 2, 8, 4, 8, 1, 7, 8, 9, 1, 5, 0, 8, 7, 4, 8, 9, 8, 0, 7, 4, 7, 1, 2, 8, 6, 1, 3, 9, 3, 9, 1, 3, 2, 4, 9, 5, 1, 2, 9, 4, 8, 5, 3, 4, 6, 8, 9, 2, 5, 9, 4, 6, 2, 1, 4, 9, 6, 0, 9, 8, 0, 4, 7, 9, 2, 1, 6])

Check that :trac:`19495` is fixed::
Expand Down Expand Up @@ -100,6 +101,7 @@ def _triangles(dg):

EXAMPLES::

sage: # needs sage.modules
sage: from sage.combinat.cluster_algebra_quiver.mutation_type import _triangles
sage: Q = ClusterQuiver(['A',3])
sage: _triangles(Q.digraph())
Expand Down Expand Up @@ -154,6 +156,7 @@ def _all_induced_cycles_iter( dg ):

EXAMPLES::

sage: # needs sage.modules
sage: from sage.combinat.cluster_algebra_quiver.mutation_type import _all_induced_cycles_iter
sage: Q = ClusterQuiver(['A',[6,0],1]); Q
Quiver on 6 vertices of type ['D', 6]
Expand Down Expand Up @@ -220,6 +223,7 @@ def _reset_dg(dg, vertices, dict_in_out, del_vertices):

EXAMPLES::

sage: # needs sage.modules
sage: from sage.combinat.cluster_algebra_quiver.mutation_type import _reset_dg
sage: dg = ClusterQuiver(['A',[2,2],1]).digraph(); dg
Digraph on 4 vertices
Expand Down Expand Up @@ -326,6 +330,7 @@ def _connected_mutation_type(dg):

EXAMPLES::

sage: # needs sage.modules
sage: from sage.combinat.cluster_algebra_quiver.mutation_type import _connected_mutation_type
sage: from sage.combinat.cluster_algebra_quiver.quiver import ClusterQuiver
sage: dg = ClusterQuiver(['A',3]).digraph(); _connected_mutation_type( dg )
Expand Down Expand Up @@ -820,15 +825,14 @@ def _connected_mutation_type_AAtildeD(dg, ret_conn_vert=False):

EXAMPLES::

sage: # needs sage.modules
sage: from sage.combinat.cluster_algebra_quiver.mutation_type import _connected_mutation_type_AAtildeD
sage: Q = ClusterQuiver(['A',[7,0],1]); Q.mutate([0,1,4])
sage: _connected_mutation_type_AAtildeD(Q.digraph(),ret_conn_vert=True)
[['D', 7], [0, 4]]

sage: Q2 = ClusterQuiver(['A',[5,2],1]); Q2.mutate([4,5])
sage: _connected_mutation_type_AAtildeD(Q2.digraph() )
['A', [2, 5], 1]

sage: Q3 = ClusterQuiver(['E',6]); Q3.mutate([5,2,1])
sage: _connected_mutation_type_AAtildeD(Q3.digraph(),ret_conn_vert=True)
'unknown'
Expand Down Expand Up @@ -1305,6 +1309,7 @@ def _mutation_type_from_data( n, dig6, compute_if_necessary=True ):

EXAMPLES::

sage: # needs sage.modules
sage: from sage.combinat.cluster_algebra_quiver.mutation_class import _digraph_to_dig6
sage: from sage.combinat.cluster_algebra_quiver.mutation_type import _mutation_type_from_data
sage: from sage.combinat.cluster_algebra_quiver.quiver import ClusterQuiver
Expand Down
8 changes: 4 additions & 4 deletions src/sage/combinat/cluster_algebra_quiver/quiver.py
Original file line number Diff line number Diff line change
Expand Up @@ -2150,18 +2150,17 @@ def d_vector_fan(self):

EXAMPLES::

sage: # needs sage.geometry.polyhedron sage.libs.singular
sage: Fd = ClusterQuiver([[1,2]]).d_vector_fan(); Fd
Rational polyhedral fan in 2-d lattice N
sage: Fd.ngenerating_cones()
5

sage: Fd = ClusterQuiver([[1,2],[2,3]]).d_vector_fan(); Fd
Rational polyhedral fan in 3-d lattice N
sage: Fd.ngenerating_cones()
14
sage: Fd.is_smooth()
True

sage: Fd = ClusterQuiver([[1,2],[2,3],[3,1]]).d_vector_fan(); Fd
Rational polyhedral fan in 3-d lattice N
sage: Fd.ngenerating_cones()
Expand All @@ -2176,12 +2175,13 @@ def d_vector_fan(self):
...
ValueError: only makes sense for quivers of finite type
"""
if not(self.is_finite()):
raise ValueError('only makes sense for quivers of finite type')

from .cluster_seed import ClusterSeed
from sage.geometry.fan import Fan
from sage.geometry.cone import Cone

if not (self.is_finite()):
raise ValueError('only makes sense for quivers of finite type')
seed = ClusterSeed(self)
return Fan([Cone(s.d_matrix().columns())
for s in seed.mutation_class()])
Expand Down
Loading