Skip to content

Commit 62e1287

Browse files
committed
40370: remove algorithm from the homfly_polynomial cache key
1 parent 151cc74 commit 62e1287

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed

src/sage/knots/link.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3030,7 +3030,7 @@ def _isolated_components(self):
30303030
return [[list(i) for i in j]
30313031
for j in G.connected_components(sort=False)]
30323032

3033-
@cached_method
3033+
@cached_method(key=lambda s, v1, v2, n, a: (s, v1, v2, n))
30343034
def homfly_polynomial(self, var1=None, var2=None, normalization='lm', algorithm=None):
30353035
r"""
30363036
Return the HOMFLY polynomial of ``self``.
@@ -3153,14 +3153,17 @@ def homfly_polynomial(self, var1=None, var2=None, normalization='lm', algorithm=
31533153
sage: K = Knots().from_table(8, 21)
31543154
sage: HRlm = K.homfly_polynomial(algorithm=regina.ALG_DEFAULT); HRlm
31553155
L^6*M^2 - L^4*M^4 - L^6 + 3*L^4*M^2 - 3*L^4 + 2*L^2*M^2 - 3*L^2
3156+
sage: K.homfly_polynomial.clear_cache() # since cache does not distinguish algorithms
31563157
sage: HRlm == K.homfly_polynomial()
31573158
True
31583159
sage: HRaz = K.homfly_polynomial(normalization='az', algorithm=regina.ALG_BACKTRACK); HRaz
31593160
a^6*z^2 - a^4*z^4 + a^6 - 3*a^4*z^2 - 3*a^4 + 2*a^2*z^2 + 3*a^2
3161+
sage: K.homfly_polynomial.clear_cache()
31603162
sage: HRaz == K.homfly_polynomial(normalization='az')
31613163
True
31623164
sage: HRvz = K.homfly_polynomial(normalization='vz', algorithm=regina.ALG_TREEWIDTH); HRvz
31633165
2*v^-2*z^2 - v^-4*z^4 + 3*v^-2 - 3*v^-4*z^2 - 3*v^-4 + v^-6*z^2 + v^-6
3166+
sage: K.homfly_polynomial.clear_cache()
31643167
sage: HRvz == K.homfly_polynomial(normalization='vz')
31653168
True
31663169
@@ -4182,17 +4185,22 @@ def _knotinfo_matching_list(self):
41824185
br = self.braid()
41834186
br_ind = br.strands()
41844187

4188+
def cmp_braid(b):
4189+
if (b.strands() <= br_ind):
4190+
return self._markov_move_cmp(b)
4191+
return False
4192+
41854193
res = []
41864194
for L in l:
41874195
if L.pd_notation() == pd_code:
41884196
# pd_notation is unique in the KnotInfo database
41894197
res.append(L)
41904198
continue
41914199

4192-
Lbraid = L.braid()
4193-
if Lbraid.strands() <= br_ind:
4194-
if self._markov_move_cmp(Lbraid):
4195-
res.append(L)
4200+
if cmp_braid(L.braid()):
4201+
res.append(L)
4202+
elif cmp_braid(L.link().braid()):
4203+
res.append(L)
41964204

41974205
if res:
41984206
if len(res) > 1 or res[0].is_unique():

0 commit comments

Comments
 (0)