Skip to content

Instantly share code, notes, and snippets.

@Shamrock-Frost
Last active July 8, 2020 05:22
Show Gist options
  • Save Shamrock-Frost/da49c364b9695310349643da0cd3e771 to your computer and use it in GitHub Desktop.
Save Shamrock-Frost/da49c364b9695310349643da0cd3e771 to your computer and use it in GitHub Desktop.
# sadly sage doesn't let me have symbolic variables taking values in Q(u)
# so we need to look include those variables in the definition
K = FractionField(PolynomialRing(QQ, ['u', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']))
u, a, b, c, d, e, f, g, h, i, j = K.gens()
# taking u = sqrt(t) we get the R-matrix for the Jones polynomial
R = matrix(K, 4, [-u, 0, 0, 0, 0, u^3 - u, -u^2, 0, 0, -u^2, 0, 0, 0, 0, 0, -u])
mu = matrix(K, 2, [-u, 0, 0, -1/u])
D = matrix(K, 4, [-u, 0, 0, 0, 0, -u, 0, 0, 0, 0, -u, 0, 0, 0, 0, u^3])
P = matrix(K, 4, [0, 0, 1, 0, 0, 1/u, 0, -u, 0, 1, 0, 1, 1, 0, 0, 0])
assert(bool(R == P * D * P.inverse()))
# because of ^, RS = SR iff D (P^{-1} S P) = (P^{-1} S P) D
# the centralizer of D is all the (3,1) block diagonal matrices, by fun facts about diagonal matrices
# T is an arbitrary element of the centralizer of D. Then S is an arbitrary element of the centralizer of R
T = matrix(K, 4, [a, b, c, 0, d, e, f, 0, g, h, i, 0, 0, 0, 0, j])
S = P * T * P.inverse()
assert(bool(S*R == R*S))
I2 = matrix(K, 2, [1,0, 0,1])
# YBE
assert(bool(I2.tensor_product(R) * R.tensor_product(I2) * I2.tensor_product(R) == R.tensor_product(I2) * I2.tensor_product(R) * R.tensor_product(I2)))
# Mixed YBE 1
# want diff = 0
diff = I2.tensor_product(S) * R.tensor_product(I2) * I2.tensor_product(R) - R.tensor_product(I2) * I2.tensor_product(R) * S.tensor_product(I2)
# this implies h = u^2 h, so h = 0
print(diff[0,1])
# this implies g = u^2 g, so g = 0
print(diff[0,3])
# this implies f = u f, so f = 0
print(diff[1,0])
# this implies u^2(u^2 - 1)(i - e) = 0, so e = i
print(diff[1,1])
# this implies d = u d, so d = 0
print(diff[1,6])
# this implies c = u^2 c, so c = 0
print(diff[3,0])
# this implies b = u b, so b = 0
print(diff[3,2])
# this implies u^2(u^2 - 1)(e - a) = 0, so e = a = i
print(diff[3,3])
K = LaurentPolynomialRing(QQ, 'u')
u = K.gen()
K = PolynomialRing(K, ['p', 'q'])
p, q = K.gens()
# taking u = sqrt(t) we get the R-matrix for the Jones polynomial
R = matrix(K, 4, [-u, 0, 0, 0, 0, u^3 - u, -u^2, 0, 0, -u^2, 0, 0, 0, 0, 0, -u])
mu = matrix(K, 2, [-u, 0, 0, -u^-1])
I2 = matrix(K, 2, [1, 0, 0, 1])
S = matrix(K, 4, [p, 0, 0, 0, 0, p + u^2 * q, -u * q, 0, 0, -u * q, p + q, 0, 0, 0, 0, p])
assert(bool(S*R == R*S))
assert(bool(S*mu.tensor_product(mu) == mu.tensor_product(mu)*S))
assert(bool(R*mu.tensor_product(mu) == mu.tensor_product(mu)*R))
# YBE
assert(bool(I2.tensor_product(R) * R.tensor_product(I2) * I2.tensor_product(R) == R.tensor_product(I2) * I2.tensor_product(R) * R.tensor_product(I2)))
# Mixed YBE 1
assert(bool(I2.tensor_product(S) * R.tensor_product(I2) * I2.tensor_product(R) == R.tensor_product(I2) * I2.tensor_product(R) * S.tensor_product(I2)))
# Mixed YBE 2
assert(bool(I2.tensor_product(R) * R.tensor_product(I2) * I2.tensor_product(S) == S.tensor_product(I2) * I2.tensor_product(R) * R.tensor_product(I2)))
print("Value of link invariant on singular figure eight: " + str((mu.tensor_product(mu) * S).trace()))
print("Determinant of S-matrix: " + str(S.determinant()))
print("Difference of both sides of YBE for S:\n" + str(I2.tensor_product(S) * S.tensor_product(I2) * I2.tensor_product(S) - S.tensor_product(I2) * I2.tensor_product(S) * S.tensor_product(I2)))
print("Taking p = q = u we get that S is not invertible and doesn't solve the YBE")
︠1abeae78-1ace-4bd2-9987-6a6227f345df︠
# sadly sage doesn't let me have symbolic variables taking values in Q(u)
# so we need to look include those variables in the definition
K = FractionField(PolynomialRing(QQ, ['u', 'f', 'g']))
u, f, g = K.gens()
# taking u = sqrt(t) we get the R-matrix for the Jones polynomial
R = matrix(K, 4, [-u, 0, 0, 0, 0, u^3 - u, -u^2, 0, 0, -u^2, 0, 0, 0, 0, 0, -u])
mu = matrix(K, 2, [-u, 0, 0, -1/u])
I2 = matrix(K, 2, [1, 0, 0, 1])
D = matrix(K, 4, [-u, 0, 0, 0, 0, -u, 0, 0, 0, 0, -u, 0, 0, 0, 0, u^3])
P = matrix(K, 4, [0, 0, 1, 0, 0, 1/u, 0, -u, 0, 1, 0, 1, 1, 0, 0, 0])
T = matrix(K, 4, [f, 0, 0, 0, 0, f, 0, 0, 0, 0, f, 0, 0, 0, 0, g])
S = P * T * P.inverse()
print(S)
assert(bool(S*R == R*S))
assert(bool(S*mu.tensor_product(mu) == mu.tensor_product(mu)*S))
assert(bool(R*mu.tensor_product(mu) == mu.tensor_product(mu)*R))
# YBE
assert(bool(I2.tensor_product(R) * R.tensor_product(I2) * I2.tensor_product(R) == R.tensor_product(I2) * I2.tensor_product(R) * R.tensor_product(I2)))
# Mixed YBE 1
assert(bool(I2.tensor_product(S) * R.tensor_product(I2) * I2.tensor_product(R) == R.tensor_product(I2) * I2.tensor_product(R) * S.tensor_product(I2)))
# Mixed YBE 2
assert(bool(I2.tensor_product(R) * R.tensor_product(I2) * I2.tensor_product(S) == S.tensor_product(I2) * I2.tensor_product(R) * R.tensor_product(I2)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment