A Python library for calculating the Jones polynomial of knots and links via abstract tensor contraction.
It can scale quite large (hundreds of crossings) by using the cotengra library for contraction path planning.
Clone, install maturin (pip install maturin) and run maturin develop --release. A working Rust and C compiler is required. It is helpful to install kahypar to get better results from cotengra.
Calculating the Jones polynomial (with
from tl_tensor import TLTensorNetwork
network = TLTensorNetwork.from_word([1, 1, 1, 1, 2, -1, 2, 2])
contracted = network.contract(optimize='auto')
jones = contracted.tensors[0].terms[0][1]
print(jones)Using cotengra to optimize large computations (in this case the (15, 15) torus knot):
from tl_tensor import TLTensorNetwork, CotengraOptimizer
network = TLTensorNetwork.from_word(list(range(1, 15)) * 15)
opt = CotengraOptimizer(progbar=True, max_repeats=128)
info = network.contract_info(optimize=opt, parallel='auto', progbar=True)
print("contraction path =", info.path)
print("log10(cost) =", info.cost)