(* ::Package:: *)

(************************************************************************)
(* This file was generated automatically by the Mathematica front end.  *)
(* It contains Initialization cells from a Notebook file, which         *)
(* typically will have the same name as this file except ending in      *)
(* ".nb" instead of ".m".                                               *)
(*                                                                      *)
(* This file is intended to be loaded into the Mathematica kernel using *)
(* the package loading commands Get or Needs.  Doing so is equivalent   *)
(* to using the Evaluate Initialization Cells menu command in the front *)
(* end.                                                                 *)
(*                                                                      *)
(* DO NOT EDIT THIS FILE.  This entire file is regenerated              *)
(* automatically each time the parent Notebook file is saved in the     *)
(* Mathematica front end.  Any changes you make to this file will be    *)
(* overwritten.                                                         *)
(************************************************************************)



(* ::Input::Initialization:: *)
<< KnotTheory`


(* ::Input::Initialization:: *)
J[K_] := Module[{t1,t2,t3,t4,t5,t6,P},
SetAttributes[P, Orderless];
t1=PD[K] /. x_X :> If[PositiveQ[x], Xp@@x, Xm@@x];
t2=Times@@t1;
t3=t2 /. {
Xp[i_,j_,k_,l_] :> q*P[i,j]P[k,l]-q^2*P[i,l]P[j,k],
Xm[i_,j_,k_,l_] :> -q^(-2)*P[i,j]P[k,l]+1/q*P[i,l]P[j,k]
};
t4=Expand[t3];
t5=t4 //. P[a_,b_]P[b_,c_] :> P[a,c];
t6=t5 /. {
P[i_,i_] :> (q+1/q),
P[i_,j_]^2 :> (q+1/q)
};
Simplify[t6/(q+q^-1) /. q->Sqrt[q]]
]


(* ::Input::Initialization:: *)
SetAttributes[P, Orderless];
TJ[t2_] := Module[{t3,t4,t5,t6},
t3=t2 /. {
Xp[i_,j_,k_,l_] :> q*P[i,j]P[k,l]-q^2*P[i,l]P[j,k],
Xm[i_,j_,k_,l_] :> -q^(-2)*P[i,j]P[k,l]+1/q*P[i,l]P[j,k]
};
t4=Expand[t3];
t5=t4 //. P[a_,b_]P[b_,c_] :> P[a,c];
t6=t5 /. {
P[i_,i_] :> (q+1/q),
P[i_,j_]^2 :> (q+1/q)
};
Simplify[t6]
]


(* ::Input::Initialization:: *)
FJ[K_] := Module[{todo,touched={},x,J=1},
SetAttributes[P, Orderless];
todo=List@@PD[K] /. x_X :> If[PositiveQ[x], Xp@@x, Xm@@x];
While[Length[todo]>0,
x=First@MaximalBy[todo,Length[touched\[Intersection](List@@#)]&];
J*=x /. {
Xp[i_,j_,k_,l_] :> q*P[i,j]P[k,l]-q^2*P[i,l]P[j,k],
Xm[i_,j_,k_,l_] :> -q^(-2)*P[i,j]P[k,l]+1/q*P[i,l]P[j,k]
};
J=Expand[J]//. P[a_,b_]P[b_,c_] :> P[a,c] /. {
P[i_,i_] :> (q+1/q),
P[i_,j_]^2 :> (q+1/q)
};
todo=DeleteCases[todo, x];
];
Simplify[J/(q+q^-1) /. q->Sqrt[q]]
]



