@@ -4833,7 +4833,7 @@ def SetToPath(T):
48334833 return ans
48344834
48354835
4836- def is_LeeLiZel_allowable (T , n , m , b , c ):
4836+ def is_LeeLiZel_allowable (T , n , m , b , c ) -> bool :
48374837 """
48384838 Check if the subset `T` contributes to the computation of the greedy element `x[m,n]` in the rank two `(b,c)`-cluster algebra.
48394839
@@ -4848,52 +4848,54 @@ def is_LeeLiZel_allowable(T, n, m, b, c):
48484848 True
48494849 """
48504850 horiz = set (T ).intersection (PathSubset (n , 0 ))
4851- vert = set (T ).symmetric_difference (horiz )
4852- if len (horiz ) == 0 or len (vert ) == 0 :
4851+ if not horiz :
48534852 return True
4854- else :
4855- Latt = SetToPath (PathSubset (n , m ))
4856- for u in horiz :
4857- from sage .combinat .words .word import Word
4858- from sage .modules .free_module_element import vector
4859- WW = Word (Latt )
4860- LattCycled = vector (WW .conjugate (Latt .index (u ))).list ()
4861- for v in vert :
4862- uv_okay = False
4863- for A in range (LattCycled .index (v )):
4864- EA = []
4865- AF = copy (LattCycled )
4866- for i in range (LattCycled .index (v ), len (LattCycled )- 1 ):
4867- AF .pop ()
4868- AF .reverse ()
4869- for i in range (A + 1 ):
4870- EA .append (LattCycled [i ])
4871- AF .pop ()
4872- AF .reverse ()
4873- nAF1 = 0
4874- for i in range (len (AF )):
4875- if AF [i ] % 2 == 1 :
4876- nAF1 += 1
4877- nAF2 = 0
4878- for i in range (len (AF )):
4879- if AF [i ] % 2 == 0 and AF [i ] in vert :
4880- nAF2 += 1
4881- nEA2 = 0
4882- for i in range (len (EA )):
4883- if EA [i ] % 2 == 0 :
4884- nEA2 += 1
4885- nEA1 = 0
4886- for i in range (len (EA )):
4887- if EA [i ] % 2 == 1 and EA [i ] in horiz :
4888- nEA1 += 1
4889- if nAF1 == b * nAF2 or nEA2 == c * nEA1 :
4890- uv_okay = True
4891- if not uv_okay :
4892- return False
4853+ vert = set (T ).symmetric_difference (horiz )
4854+ if not vert :
48934855 return True
48944856
4895-
4896- def get_green_vertices (C ):
4857+ Latt = SetToPath (PathSubset (n , m ))
4858+ for u in horiz :
4859+ from sage .combinat .words .word import Word
4860+ from sage .modules .free_module_element import vector
4861+ WW = Word (Latt )
4862+ LattCycled = vector (WW .conjugate (Latt .index (u ))).list ()
4863+ for v in vert :
4864+ uv_okay = False
4865+ for A in range (LattCycled .index (v )):
4866+ EA = []
4867+ AF = copy (LattCycled )
4868+ for i in range (LattCycled .index (v ), len (LattCycled ) - 1 ):
4869+ AF .pop ()
4870+ AF .reverse ()
4871+ for i in range (A + 1 ):
4872+ EA .append (LattCycled [i ])
4873+ AF .pop ()
4874+ AF .reverse ()
4875+ nAF1 = 0
4876+ for i in range (len (AF )):
4877+ if AF [i ] % 2 == 1 :
4878+ nAF1 += 1
4879+ nAF2 = 0
4880+ for i in range (len (AF )):
4881+ if AF [i ] % 2 == 0 and AF [i ] in vert :
4882+ nAF2 += 1
4883+ nEA2 = 0
4884+ for i in range (len (EA )):
4885+ if EA [i ] % 2 == 0 :
4886+ nEA2 += 1
4887+ nEA1 = 0
4888+ for i in range (len (EA )):
4889+ if EA [i ] % 2 == 1 and EA [i ] in horiz :
4890+ nEA1 += 1
4891+ if nAF1 == b * nAF2 or nEA2 == c * nEA1 :
4892+ uv_okay = True
4893+ if not uv_okay :
4894+ return False
4895+ return True
4896+
4897+
4898+ def get_green_vertices (C ) -> list [int ]:
48974899 r"""
48984900 Get the green vertices from a matrix.
48994901
@@ -4914,7 +4916,7 @@ def get_green_vertices(C):
49144916 return [i for i , v in enumerate (C .columns ()) if any (x > 0 for x in v )]
49154917
49164918
4917- def get_red_vertices (C ):
4919+ def get_red_vertices (C ) -> list [ int ] :
49184920 r"""
49194921 Get the red vertices from a matrix.
49204922
0 commit comments