Cluster Algebras and the HOMFLY Polynomial

Companion code to this paper.

This code is meant to be used in an interactive session. Try it out here! (or clone this repo and run ghci Main.hs)

The file homfly200c.txt comes from this website, which is the result of the paper "A formula for the HOMFLY polynomial of rational links" by Sergei Duzhin and Mikhail Shkolnikov.

Examples

> evenCF (38/11)
[4,-2,6]
> quo [3,7]
22/7
> poset [2,3,-4,2,3,1]
  2                       14
 / \                     /  
1   3   6              13   
     \ / \            /     
      4   7   10    12      
           \ /  \  /        
            8    11         
> poset [2,3]
  2    
 / \   
1   3  
     \ 
      4
> ideals (poset [2,3])
[[],[1],[4],[1,4],[3,4],[1,3,4],[1,2,3,4]]
> Jones.sF [2,3]
1 + 2t^(-2) - t^(-1) - t^(-3) + t^(-4) - t^(-5)
> HOMFLY.lookup [2] -- from Duzhin-Shkolnikov
- l^(-3) z^(-1) + l^(-1) z^(-1) + l^(-1) q^(1/2) - l^(-1) q^(-1/2)
> HOMFLY.msF [2] -- = m[2] sF[2], identical to the above!
- l^(-3) z^(-1) + l^(-1) z^(-1) + l^(-1) q^(1/2) - l^(-1) q^(-1/2)

The functions checkHOMFLY, checkAlexander, and checkJones provide a summary of these values:

> checkHOMFLY [-2]
Even CF: [-2] = (-2)
 1
Ideals: [], [1]
Specialized F-poly:      1 + q^(-2) w
Normalized Spec. F-poly: - l q^(1/2) - l z^(-1) + l^3 z^(-1) + l q^(-1/2)
HOMFLY Polynomial:       - l z^(-1) + l^3 z^(-1) - l q^(1/2) + l q^(-1/2)
> checkAlexander [2,-4,2]
Even CF: [2,-4,2] = 12/7
       5  
      / \ 
 1   4   7
  \ /     
   3      
Ideals: [], [3], [7], [1,3], [3,4], [3,7], [1,3,4], [1,3,7], [3,4,7], [1,3,4,7], [3,4,5,7], [1,3,4,5,7]
Specialized F-poly:      2 - 4t^(-1) + 4t^(-2) - 2t^(-3)
Normalized Spec. F-poly: - 4t^(1/2) + 4t^(-1/2) + 2t^(3/2) - 2t^(-3/2)
Alexander Polynomial:    - 4t^(1/2) + 4t^(-1/2) + 2t^(3/2) - 2t^(-3/2)
(sgn(c0)t^e0 = t^(3/2), m[..] = t^(3/2))

Note that sometimes the values of HOMFLY.lookup and HOMFLY.msF may not be evidently equal, e.g.

> checkHOMFLY [2,2]
Even CF: [2,2] = 5/2
   2  
  / \ 
 1   3
Ideals: [], [1], [3], [1,3], [1,2,3]
Specialized F-poly:      1 + l^2 w^(-1) - q^(-1) - l^2 q^(-1) w^(-1) + l^4 w^(-1)
Normalized Spec. F-poly: l^(-2) q^(1/2) z^(-1) - q^(1/2) z^(-1) - q + 2 - l^(-2) q^(-1/2) z^(-1) + q^(-1/2) z^(-1) - q^(-1) + l^2
HOMFLY Polynomial:       l^(-2) + 1 + l^2 - q - q^(-1)

But, using the fact that z = q^(1/2) - q^(-1/2), a computer algebra system can do the rest (e.g. Wolfram|Alpha can show that both polynomials above are the same). The following Mathematica command is helpful:

ESR[f_] := Expand[Simplify[f /. z -> (q^(1/2) - q^(-1/2))]];

Haskell will assume fractions typed at the command line are floating point numbers unless it is otherwise specified (e.g. 3/2 gives 1.5). To use the Rational class defined in Data/RatioInfty instead, type:

> default (Rational)