Pensieve header: The Polished ${\mathfrak g}_1$ Invariant.

The Polished (Subscript[𝔤, 1]) Invariant

Initialization

Once[<<KnotTheory`];

NOE-1t

(Subscript[DP, x_->(Subscript[D, α_]),y_->(Subscript[D, β_])])[P_][f_]:= (* means P[(∂_α),(∂_β)][f] *)
Total[CoefficientRules[P,{x,y}]/.({m_,n_}->c_):>c D[f,{α,m},{β,n}]]

CF[𝔼[ω_,L_,Q_,P_]]:=𝔼[Expand@Together@ω, Expand@Together@L, Expand@Together@Q,Expand@Together@P];

𝔼/:𝔼[ω1_,L1_,Q1_,P1_]𝔼[ω2_,L2_,Q2_,P2_]:=CF@𝔼[ω1 ω2,L1+L2,ω2 Q1+ω1 Q2,((ω2)^4)P1+((ω1)^4)P2];

Λ[k_]:= (((Subscript[t, k])-1)(2(((α β+δ μ))^2)-(α^2)(β^2))-4(Subscript[e, k])(Subscript[l, k])(Subscript[f, k])(δ^2)(μ^2)-
δ(1+μ)((Subscript[f, k]^2)(α^2)+(Subscript[e, k]^2)(β^2))-(Subscript[e, k]^2)(Subscript[f, k]^2)(δ^3)(1+3μ)-2(α β+2δ μ+(Subscript[e, k])(Subscript[f, k])(δ^2)(1+2μ)+2(Subscript[l, k])δ (μ^2))((Subscript[f, k])α+(Subscript[e, k])β)-4((Subscript[l, k])(μ^2)+(Subscript[e, k])(Subscript[f, k])δ(1+μ))(α β+δ μ))(1+(Subscript[t, k]))/4;

(Subscript[N, (Subscript[f, i_])(Subscript[e, j_])->k_])[𝔼[ω_,L_,Q_,P_]]:=With[{q=((1-(Subscript[t, k]))α β+β (Subscript[e, k])+δ (Subscript[e, k])(Subscript[f, k])+α (Subscript[f, k]))/μ},CF[
𝔼[μ ω,L,μ ω q+μ(Q/.(Subscript[f, i])|(Subscript[e, j])->0),(μ^4)((Subscript[DP, (Subscript[f, i])->(Subscript[D, α]),(Subscript[e, j])->(Subscript[D, β])])[P][(E^q)]/.(E^(_))->1)+(ω^4)Λ[k]]/.μ->1+((Subscript[t, k])-1)δ/.{α->(ω^(-1))((∂_(Subscript[f, i]))Q/.(Subscript[e, j])->0),β->(ω^(-1))((∂_(Subscript[e, j]))Q/.(Subscript[f, i])->0),δ->(ω^(-1))(∂_((Subscript[f, i]),(Subscript[e, j])))Q}]];

(Subscript[N, (Subscript[l, j_])(Subscript[(x:e|f), i_])->k_])[𝔼[ω_,L_,Q_,P_]]:=With[{q=(E^γ)β (Subscript[x, k])+γ (Subscript[l, k])},CF[
𝔼[ω,γ (Subscript[l, k])+(L/.(Subscript[l, j])->0),ω (E^γ)β (Subscript[x, k])+(Q/.(Subscript[x, i])->0),(E^(-q))(Subscript[DP, (Subscript[l, j])->(Subscript[D, γ]),(Subscript[x, i])->(Subscript[D, β])])[P][(E^q)]]/.{γ->(∂_(Subscript[l, j]))L,β->(ω^(-1))(∂_(Subscript[x, i]))Q}]];

(Subscript[m, i_,j_->k_])[Z_𝔼]:=Module[{x,z},
CF[(Z//(Subscript[N, (Subscript[f, i])(Subscript[e, j])->x])//(Subscript[N, (Subscript[l, i])(Subscript[e, x])->x])//(Subscript[N, (Subscript[f, x])(Subscript[l, j])->x]))/.(Subscript[z_, i|j|x])->(Subscript[z, k])]]

(Subscript[R, i_,j_]^(+)):=𝔼[1,Log[(Subscript[t, i])](Subscript[l, j]),(Subscript[e, i])(Subscript[f, j]),(Subscript[e, i])(Subscript[l, i])(Subscript[f, j])+(Subscript[l, i])(Subscript[l, j])+(Subscript[e, i]^2)(Subscript[f, j]^2)/4];
(Subscript[R, i_,j_]^(-)):=𝔼[1,-Log[(Subscript[t, i])](Subscript[l, j]),-(Subscript[t, i]^(-1))(Subscript[e, i])(Subscript[f, j]),-(Subscript[l, i])(Subscript[l, j])+(Subscript[t, i]^(-1))(Subscript[e, i])(Subscript[l, j])(Subscript[f, j])-(Subscript[t, i]^(-2))(Subscript[e, i]^2)(Subscript[f, j]^2)/4];
((Subscript[ur, i_]):=𝔼[(Subscript[t, i]^(-1/2)),0,0,(Subscript[l, i])(Subscript[t, i]^(-2))]; (Subscript[nr, i_]):=𝔼[(Subscript[t, i]^(1/2)),0,0,-(Subscript[l, i])(Subscript[t, i]^2)];)
(Subscript[ul, _])=(Subscript[nl, _])=rot[_,0] = 𝔼[1,0,0,0];
rot[i_,1] := (Subscript[ur, i]); rot[i_,n_Integer] /; n>1 := Module[{y}, rot[i,n-1]rot[y,1] // (Subscript[m, i,y->i])];
rot[i_,-1] := (Subscript[nr, i]); rot[i_,n_Integer] /; n<-1 := Module[{y}, rot[i,n+1]rot[y,-1] // (Subscript[m, i,y->i])];

Rotational Virtual Knots and Z

RVK::usage="RVK[xs, rots] represents a Rotational Virtual Knot with a list of n Xp/Xm crossings xs and a length 2n list of rotation numbers rots. Crossing sites are indexed 1 through 2n, and rots[[k]] is the rotation between site k-1 and site k. RVK is also a casting operator converting to the RVK presentation from other knot presentations.";
RVK[pd_PD] := Module[{n,xs,x,rots,front,k},
n=Length[pd];
xs=List@@pd /. x_X :> If[PositiveQ[x], Xp[x[[4]],x[[1]]], Xm[x[[2]],x[[1]]]];
rots=Table[0, {2n}];
front={0};
For[k=0, k<2n, ++k,
If[k==0∨FreeQ[front, -k],
front = Flatten[front /. k->Catch[xs /. {
Xp[k+1,l_]|Xm[l_,k+1] :> Throw[{l,k+1,1-l}],
Xp[l_,k+1]|Xm[k+1,l_] :> (++rots[[l]]; Throw[{1-l,k+1,l}])
}]],
If[MatchQ[front,{___,k,___,-k,___}], --rots[[k+1]]]
]];
RVK[xs,rots]];
RVK[K_] := RVK[PD[K]];

(Subscript[t, _])=t;
Z[K_] := Z[RVK@K];
Z[rvk_RVK] := Module[{todo,n,rots,ζ,done,st,x, ζ1, i,j,k,k1,k2,k3},
{todo,rots}=List@@rvk;
AppendTo[rots,0];
n=Length[todo];
ζ=𝔼[1,0,0,0];
done={0};
st=Range[0,2n+1];
While[todo=!={},
{x}=MaximalBy[todo, Length[done⋂{#[[1]], #[[2]], #[[1]]-1,#[[2]]-1}]&,1];
Z$todo=todo; Z$x=x;
{i,j}=List@@x;
ζ1=Switch[Head[x],
 Xp, (Subscript[m, j,k->j])[(Subscript[R, i,j]^(+))((Subscript[R, k3,k]^(-))(Subscript[nr, k1])(Subscript[ul, k2])//(Subscript[m, k,k1->k])//(Subscript[m, k,k2->k])//(Subscript[m, k,k3->k]))],
 Xm, (Subscript[m, j,k->j])[(Subscript[R, i,j]^(-))((Subscript[R, k,k3]^(+))(Subscript[nr, k1])(Subscript[ul, k2])//(Subscript[m, k,k1->k])//(Subscript[m, k,k2->k])//(Subscript[m, k,k3->k]))]
];
ζ1=rot[k,rots[[i]]]ζ1 // (Subscript[m, k,i->i]); rots[[i]]=0;
ζ1=ζ1 rot[k, rots[[i+1]]] // (Subscript[m, i,k->i]); rots[[i+1]]=0;
ζ1=rot[k,rots[[j]]]ζ1 // (Subscript[m, k,j->j]); rots[[j]]=0;
ζ1=ζ1 rot[k, rots[[j+1]]] // (Subscript[m, j,k->j]); rots[[j+1]]=0;
ζ*=ζ1;
If[MemberQ[done, i],  ζ=ζ//(Subscript[m, i,i+1->i]); st=st/.st[[i+2]]->st[[i+1]]];
If[MemberQ[done, i-1],  ζ=ζ//(Subscript[m, st[[i]],i->st[[i]]]); st=st/.st[[i+1]]->st[[i]]]; 
If[MemberQ[done, j],  ζ=ζ//(Subscript[m, j,j+1->j]); st=st/.st[[j+2]]->st[[j+1]]]; 
If[MemberQ[done, j-1],  ζ=ζ//(Subscript[m, st[[j]],j->st[[j]]]); st=st/.st[[j+1]]->st[[j]]];
done=done⋃{i-1,i,j-1,j};
todo=DeleteCases[todo, x]
];
ζ /. {(Subscript[e, 0])->e,(Subscript[l, 0])->l,(Subscript[f, 0])->f}]

Testing (Subscript[3, 1]), (Subscript[8, 17]), and (Subscript[T, 9,5])

Timing[Z[Knot[3,1]]]

Timing[Z[Knot[8,17]]]

Timing[Z[TorusKnot[9,5]]]