-
Notifications
You must be signed in to change notification settings - Fork 5
Description
While implementing sagemath/sage#37014 I noticed that Khoca produces other results for a list of 1091 non alternating multi-component links when called with the pd_notation instead of the braid_notation according to the values given on the LinkInfo database. Maybe this is related to #2.
For example for L6n1{0,0} using the braid you get:
root@6d452c5640de:/khoca# ./khoca.py 0 0.0 0 braidaBabAb calc0
Frobenius algebra: Z[X] / (1*X^2).
Result:
Reduced Homology:
Non-equivariant homology:
t^-4q^8 + t^-2q^4 + t^-1q^2 + 2t^0q^0 + t^0q^2
Unreduced Homology:
Non-equivariant homology:
t^-4q^7 + t^-4q^9 + t^-2q^5 + t^-1q^1 + 2t^0q^-1 + 3t^0q^1 + t^0q^3 + t^-1q^3[2]
But using its pd_notation yields:
root@6d452c5640de:/khoca# ./khoca.py 0 0.0 0 "pd[[6, 1, 7, 2], [12, 8, 9, 7], [4, 12, 1, 11], [5, 11, 6, 10], [3, 8, 4, 5], [9, 3, 10, 2]]" calc0
[[2, 4, -1, 5, 0], [3, 6, 7, 5, 11], [3, 10, -1, 9, 2], [3, 9, 4, 8, 3], [3, 6, 2, 3, 1], [3, 1, 8, 0, 7]]
Frobenius algebra: Z[X] / (1*X^2).
Result:
Reduced Homology:
Non-equivariant homology:
t^-5q^11 + t^-3q^7 + t^-2q^5 + 2t^-1q^3 + t^-1q^5
Unreduced Homology:
Non-equivariant homology:
t^-5q^10 + t^-5q^12 + t^-3q^8 + t^-2q^4 + 2t^-1q^2 + 3t^-1q^4 + t^-1q^6 + t^-2q^6[2]
Note that the pd_notation actually matches the braid_notation (i.e. the braid obtained by the Vogel algorithm from the PD-code is conjugated to the braid):
sage: L1 = Link([[6, 1, 7, 2], [12, 8, 9, 7], [4, 12, 1, 11], [5, 11, 6, 10], [3, 8, 4, 5], [9, 3, 10, 2]])
sage: b1 = L1.braid() # obtained by Vogel algorithm from the PD-code
sage: b2 = BraidGroup(3)((1, -2, 1, 2, -1, 2))
sage: b1.is_conjugated(b2)
True
In all cases, the result for the braid coincides with the value given on LinkInfo up to a substitution t -> 1/t.
sage: from sage.repl.preparse import implicit_mul
....: from sage.misc.sage_eval import sage_eval
....: s_khoca = 't^-4q^7 + t^-4q^9 + t^-2q^5 + t^-1q^1 + 2t^0q^-1 + 3t^0q^1 + t^0q^3'
....: s_link_info = '2/q + 3*q + q^3 + q*t + q^5*t^2 + q^7*t^4 + q^9*t^4'
....: for i in ['q', 't', 'T', ')']:
....: for j in ['q', 't', 'T', '(']:
....: s_khoca = s_khoca.replace('%s%s' % (i, j), '%s*%s' % (i, j))
....: s_link_info = s_link_info.replace('%s%s' % (i, j), '%s*%s' % (i, j))
....: s_khoca = implicit_mul(s_khoca)
....: s_link_info = implicit_mul(s_link_info)
....: R = LaurentPolynomialRing(ZZ, 't,q')
....: t, q = R.gens()
....: p_khoca = sage_eval(s_khoca, {'t': t, 'q': q})
....: p_link_info = sage_eval(s_link_info, {'t': t, 'q': q})
....: p_khoca.subs({t: 1/t}) == p_link_info
True
The above examples which use SageMath can be reproduced at least with the current release 10.2 (for instance using docker by docker run -it sagemath/sagemath:latest).
The list_1091_link_khoca_diff with all 1091 examples is attached as a json file. To read it into a Python or Sage session use (assuming it has been downloaded to the current folder):
sage: import json
....: with open('list_1091_link_khoca_diff.json') as f:
....: list_1091_link_khoca_diff = json.load(f)
....:
....: len(list_1091_link_khoca_diff)
1091