CoCalc Public FilesFG-monodromies-SL4.sagewsOpen with one click!
Authors: Gus Schrader, Alexander Shapiro
Views : 147
Description: cluster calculations SL(4)
load('new-feed.sage')
R.<y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13,y14,y15,y16,y17,y18>=QQ[] ### quiver is sl4-originalstyle in 2016-quivers baseC=matrix(QQ,[[0,1,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0],[-1,0,1,0,1,0,-1,0,0,0,0,0,0,0,0,0,0,0],[0,-1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,0,0,0,-1,0,0,0,0,0,0,0,0],[1,-1,0,-1,0,1,0,0,0,1,-1,0,0,0,0,0,0,0],[0,0,0,0,-1,0,1,0,0,0,1,0,-1,0,0,0,0,0],[0,1,-1,0,0,-1,0,1,0,0,0,0,1,-1,0,0,0,0],[0,0,0,0,0,0,-1,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,-1,0,0],[0,0,0,1,-1,0,0,0,-1,0,1,0,0,0,0,1,-1,0],[0,0,0,0,1,-1,0,0,0,-1,0,1,0,0,0,0,1,-1],[0,0,0,0,0,0,0,0,0,0,-1,0,1,0,0,0,0,0],[0,0,0,0,0,1,-1,0,0,0,0,-1,0,1,0,0,-1,1],[0,0,0,0,0,0,1,-1,0,0,0,0,-1,0,1,-1,1,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,1,0,0],[0,0,0,0,0,0,0,0,1,-1,0,0,0,1,-1,0,0,0],[0,0,0,0,0,0,0,0,0,1,-1,0,1,-1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,1,0,-1,0,0,0,0,0]]); baseC[0,3]=1/2 baseC[3,8]=1/2 baseC[8,3]=-1/2 baseC[3,0]=-1/2 baseC[14,7]=1/2 baseC[7,2]=1/2 baseC[2,7]=-1/2 baseC[7,14]=-1/2
def get_monomials(xpr): d=xpr.denominator() n=xpr.numerator() terms = [a*b for (a,b) in zip(n.monomials(),n.coefficients())] return [t/d for t in terms] def how_long(x): return len(get_monomials(x))
def show_monomials(xpr): for m in get_monomials(xpr): print m def sym(vs,deg): if (1 in vs) or (deg>len(vs)) or (deg<0): return False else: k = len(vs)-deg p = 1 for v in vs: p = p*(y1+y(v)) res = diff(p,y1,k)/factorial(k) return res.subs(y1=0)
def get_path(xpr): res=[] l=len(get_monomials(xpr)) for ix in range(l-1): try: res.append( get_monomials(xpr)[ix]/get_monomials(xpr)[ix+1]) except: ValueError res.append(get_monomials(xpr)[-1]) res.reverse() return res def build_feed(f,muts): res=copy(f) for m in muts: if type(m)!=type((0,1)): res.mutate(m) else: res.geom_mutate(m[0],m[1]) res.vList=R.gens() return res
def PB(f,g,mat=baseC,ring=R): v=ring.gens() res=0 l=len(v) for i in range(l): for j in range(l): res += diff(f,v[i])*diff(g,v[j])*mat[i,j]*v[i]*v[j] return res
def to_mon(vec): res=1 for i,v in enumerate(vec): res=res*R.gens()[i]**v return res
e1 = build_path([1,2]) e2 = build_path([4,5,6,7]) e3 = build_path([9,10,11,12,13,14]) f1 = build_path([3,7,13,18,11,5]) f2 = build_path([8,14,17,10]) f3 = build_path([15,16])
### quiver is SL4
initial_feed = feed(baseC,R.gens())
initial_feed.inv_mutation_auto([5,11,18,13,7],f1)
y3
def H1(x): return matrix([[1,0,0,0],[0,x,0,0],[0,0,x,0],[0,0,0,x]]) def H2(x): return matrix([[1,0,0,0],[0,1,0,0],[0,0,x,0],[0,0,0,x]]) def H3(x): return matrix([[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,x]]) F1 = matrix([[1,0,0,0],[1,1,0,0],[0,0,1,0],[0,0,0,1]]) E1=F1.transpose() F2 = matrix([[1,0,0,0],[0,1,0,0],[0,1,1,0],[0,0,0,1]]) E2=F2.transpose() F3 = matrix([[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,1,1]]) E3=F3.transpose() w = -matrix([[0,0,0,1],[0,0,-1,0],[0,1,0,0],[-1,0,0,0]]) def hexa(x1,x2,x3): return F3*F2*H3(x1)*F3*F1*H2(x2)*F2*H3(x3)*F3 def rect(z1,z2,z3): return H1(z1)*H2(z2)*H3(z3) def mutate_matrix(feed,muts,M,ring=R): n=M.ncols() res=matrix(FractionField(R),n,n) for i in range(n): for j in range(n): res[i,j] = feed.inv_mutation_auto(muts,M[i,j]) return res
###### First let's look at the un-self-folded triangulation: ###### Formula for E's: upper_path = rect(y1,y4,y9)*hexa(y10,y5,y11)*rect(y2,y6,y12)*hexa(y13,y7,y14)*rect(y3,y8,y15) lower_path = rect(y15,y8,y3)*hexa(y7,y14,y13)*rect(y16,y17,y18)*hexa(y11,y10,y5)*rect(y9,y4,y1) s_upper_path = rect(y1,y4,y9)*hexa(y10,y5,y11)*rect(y2,y6,y12)*hexa(y13,y7,y14) s_lower_path = rect(y16,y17,y18)*hexa(y11,y10,y5)*rect(y9,y4,y1)
lower_path[0,0] lower_path[1,1] lower_path[2,2] lower_path[3,3]
1 y9*y15*y16 y4*y8*y9*y10*y14*y15*y16*y17 y1*y3*y4*y5*y7*y8*y9*y10*y11*y13*y14*y15*y16*y17*y18
#gsv_muts=[(12,18),6,2,11,5,13,7,10,6,14,17,16,11,13,11] gsv_muts=[12,6,2,11,5,13,7,10,6,14,17,16,11,13,11]
XX=matrix([[0,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[1,0,-1,-1,1,0,-1,1,0,0,0,0,0,0,0,0,0,0],[-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,1,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,-1,0,1,0,-1,1,0,-1,1,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,-1,0,0,0,-1,0,0,0,0,1,0,0],[0,1,0,0,-1,1,0,-1,0,0,0,0,0,-1,1,0,0,0],[0,-1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,0,0,0,-1,0,0,0,0,0,0,0,0],[0,0,0,0,-1,0,0,0,1,0,0,0,0,-1,0,1,0,0],[0,0,0,0,0,1,0,0,0,0,0,1,1,0,0,-2,1,1],[0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,1,0,0],[0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,1,0,0],[0,0,0,0,0,0,1,0,0,1,0,0,0,0,-1,-1,0,0],[0,0,0,0,0,0,-1,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,-1,0,0,0,-1,2,-1,-1,1,0,0,-1,-1],[0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,1,0,0],[0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,1,0,0]]);
gsv_feed=build_feed(initial_feed,gsv_muts) gsv_mat = gsv_feed.exchangeMatrix gsv_mat[0,3]=1/2 gsv_mat[3,8]=1/2 gsv_mat[8,3]=-1/2 gsv_mat[3,0]=-1/2 gsv_mat[14,7]=1/2 gsv_mat[7,2]=1/2 gsv_mat[2,7]=-1/2 gsv_mat[7,14]=-1/2 def is_central(xpr,mat=gsv_mat): for v in R.gens(): if PB(v,xpr,mat)!=0: return False return True def cf(i,j,mat=gsv_mat): return PB(i,j,mat)/(i*j)
U_init = upper_path*w*lower_path*w.inverse() s_U_init = rect(y1,y4,y9)*hexa(y10,y5,y11)*rect(y2,y6,y12)*w*(hexa(y14,y13,y7)^-1) *rect(y18,y17,y16)^-1* (hexa(y5,y11,y10)^-1)*w*(hexa(y10,y5,y11)^-1)*rect(y1,y4,y9)^-1
U_init.matrix_from_rows_and_columns([0],[0]).det() U_init.matrix_from_rows_and_columns([0,1],[0,1]).det() U_init.matrix_from_rows_and_columns([0,1,2],[0,1,2]).det() U_init.matrix_from_rows_and_columns([0,1,2,3],[0,1,2,3]).det()
y1*y3*y4*y5*y7*y8*y9*y10*y11*y13*y14*y15*y16*y17*y18 y1^2*y2*y3^2*y4^2*y5*y7*y8^2*y9^2*y10^2*y11*y13*y14^2*y15^2*y16^2*y17^2*y18 y1^3*y2^2*y3^3*y4^3*y5^2*y6*y7^2*y8^3*y9^3*y10^2*y11*y13*y14^2*y15^3*y16^3*y17^2*y18 y1^4*y2^3*y3^4*y4^4*y5^3*y6^2*y7^3*y8^4*y9^4*y10^3*y11^2*y12*y13^2*y14^3*y15^4*y16^3*y17^2*y18
U_init.matrix_from_rows_and_columns([1],[3]).det()
-y1*y2*y3*y7*y8*y13*y14*y15*y16*y17*y18 - y1*y2*y3*y7*y8*y13*y14*y15*y16*y17 - y1*y3*y7*y8*y13*y14*y15*y16*y17*y18 - y1*y2*y3*y7*y8*y14*y15*y16*y17 - y1*y3*y7*y8*y13*y14*y15*y16*y17 - y1*y2*y3*y7*y8*y14*y15*y16 - y1*y3*y7*y8*y14*y15*y16*y17 - y1*y3*y7*y8*y14*y15*y16 - y1*y3*y8*y14*y15*y16*y17 - y1*y3*y8*y14*y15*y16 - y1*y3*y8*y15*y16 - y1*y3*y8*y15
for i1 in range(4): for j1 in range(4): if how_long(upper_path.matrix_from_rows_and_columns([i1,],[j1]).det()) ==1: print upper_path.matrix_from_rows_and_columns([i1,],[j1]).det()
1 y1*y2*y3 y1*y2*y3*y4*y5*y6*y7*y8 y1*y2*y3*y4*y5*y6*y7*y8*y9*y10*y11*y12*y13*y14*y15
for i1 in range(4): for i2 in range(i1): for j1 in range(4): for j2 in range(j1): if how_long(upper_path.matrix_from_rows_and_columns([i1,i2],[j1,j2]).det()) ==1: print upper_path.matrix_from_rows_and_columns([i1,i2],[j1,j2]).det()
y1*y2*y3 y1*y2*y3*y4*y5*y6*y7*y8 y1^2*y2^2*y3^2*y4*y5*y6*y7*y8 y1*y2*y3*y4*y5*y6*y7*y8*y9*y10*y11*y12*y13*y14*y15 y1^2*y2^2*y3^2*y4*y5*y6*y7*y8*y9*y10*y11*y12*y13*y14*y15 y1^2*y2^2*y3^2*y4^2*y5^2*y6^2*y7^2*y8^2*y9*y10*y11*y12*y13*y14*y15
upper_gsv = mutate_matrix(initial_feed,gsv_muts,upper_path) lower_gsv = mutate_matrix(initial_feed,gsv_muts,lower_path)
upper_gsv[1,0]/upper_gsv[0,0] upper_gsv[2,1]/upper_gsv[1,1] upper_gsv[3,2]/upper_gsv[2,2]
y1 y2*y4 + y4 y5*y7*y9 + y5*y9 + y9
how_long(lower_gsv[3,2]/lower_gsv[2,2])
30
upper_gsv.matrix_from_rows_and_columns([0,1],[0,1]).det()
y1*y3
U_gsv = upper_gsv*w*lower_gsv*w.inverse() #s_U_gsv = mutate_matrix(initial_feed,gsv_muts,s_U_init)
upper_gsv[0,0] upper_gsv[1,1] upper_gsv[2,2] upper_gsv[3,3]
1 y1*y3 y1*y2*y3*y4*y8 y1*y2*y3*y4*y5*y7*y8*y9*y15
(w*lower_gsv*w.inverse())[0,0] (w*lower_gsv*w.inverse())[1,1] (w*lower_gsv*w.inverse())[2,2] (w*lower_gsv*w.inverse())[3,3]
y1*y2^2*y3*y4*y5^2*y6^2*y7^2*y8*y9*y10^2*y11^3*y12*y13*y14^2*y15*y16^3*y17*y18 y4*y5*y6^2*y7*y8*y9*y10*y11*y14*y15*y16 y9*y10*y14*y15 1
y1*y2^2*y3*y4*y5^2*y6^2*y7^2*y8*y9*y10^2*y11^3*y12*y13*y14^2*y15*y16^3*y17*y18 y1*y3*y4*y5*y6^2*y7*y8*y9*y10*y11*y14*y15*y16 y1*y2*y3*y4*y8*y9*y10*y14*y15 y1*y2*y3*y4*y5*y7*y8*y9*y15
cas1=upper_path[1,1]*(lower_path)[3,3]/(lower_path)[2,2] cas2=upper_path[2,2]/upper_path[1,1]*lower_path[2,2]/lower_path[1,1] cas3=(upper_path[3,3]/upper_path[2,2])*(lower_path)[1,1]
def build_phi_1_fn(mat=U_gsv): phi_1_mat=matrix(FractionField(R),3,3) phi_1_mat[0,0]=mat[1,0] phi_1_mat[1,0]=mat[2,0] phi_1_mat[2,0]=mat[3,0] phi_1_mat[0,1]=((mat)^2)[1,0] phi_1_mat[1,1]=((mat)^2)[2,0] phi_1_mat[2,1]=((mat)^2)[3,0] phi_1_mat[0,2]=((mat)^3)[1,0] phi_1_mat[1,2]=((mat)^3)[2,0] phi_1_mat[2,2]=((mat)^3)[3,0] return phi_1_mat.det()
def build_phi_2_fn(mat=U_gsv): phi_1_mat=matrix(FractionField(R),3,3) phi_1_mat[0,0]=mat[1,0] phi_1_mat[1,0]=mat[2,0] phi_1_mat[2,0]=mat[3,0] phi_1_mat[0,1]=mat[1,1] phi_1_mat[1,1]=mat[2,1] phi_1_mat[2,1]=mat[3,1] phi_1_mat[0,2]=((mat)^2)[1,0] phi_1_mat[1,2]=((mat)^2)[2,0] phi_1_mat[2,2]=((mat)^2)[3,0] return phi_1_mat.det()
def build_phi_3_fn(mat=U_gsv): phi_1_mat=matrix(FractionField(R),2,2) phi_1_mat[0,0]=mat[2,0] phi_1_mat[1,0]=mat[3,0] phi_1_mat[0,1]=((mat)^2)[2,0] phi_1_mat[1,1]=((mat)^2)[3,0] return phi_1_mat.det()
d1=upper_gsv[0,0]*(w*lower_gsv*w.inverse())[0,0] d2=upper_gsv[1,1]*(w*lower_gsv*w.inverse())[1,1] d3=upper_gsv[2,2]*(w*lower_gsv*w.inverse())[2,2] d4=upper_gsv[3,3]*(w*lower_gsv*w.inverse())[3,3] h44=U_gsv.matrix_from_rows_and_columns([0],[0]).det() h34=U_gsv.matrix_from_rows_and_columns([1],[0]).det() h24=U_gsv.matrix_from_rows_and_columns([2],[0]).det() h14=U_gsv.matrix_from_rows_and_columns([3],[0]).det() h33=U_gsv.matrix_from_rows_and_columns([0,1],[0,1]).det() h23=U_gsv.matrix_from_rows_and_columns([1,2],[0,1]).det() h13=U_gsv.matrix_from_rows_and_columns([2,3],[0,1]).det() h22=U_gsv.matrix_from_rows_and_columns([0,1,2],[0,1,2]).det() h12=U_gsv.matrix_from_rows_and_columns([1,2,3],[0,1,2]).det() f21 =build_phi_3_fn() f11 = build_phi_1_fn() f12 = build_phi_2_fn()
h44 h34 h33 h24 h23 h22 h14 h13 h12
y1*y2^2*y3*y4*y5^2*y6^2*y7^2*y8*y9*y10^2*y11^3*y12*y13*y14^2*y15*y16^3*y17*y18 y1^2*y2^2*y3*y4*y5^2*y6^2*y7^2*y8*y9*y10^2*y11^3*y12*y13*y14^2*y15*y16^3*y17*y18 y1^2*y2^2*y3^2*y4^2*y5^3*y6^4*y7^3*y8^2*y9^2*y10^3*y11^4*y12*y13*y14^3*y15^2*y16^4*y17*y18 y1^2*y2^2*y3*y4^2*y5^2*y6^2*y7^2*y8*y9*y10^2*y11^3*y12*y13*y14^2*y15*y16^3*y17*y18 y1^3*y2^3*y3^2*y4^3*y5^3*y6^4*y7^3*y8^2*y9^2*y10^3*y11^4*y12*y13*y14^3*y15^2*y16^4*y17*y18 y1^3*y2^3*y3^3*y4^3*y5^3*y6^4*y7^3*y8^3*y9^3*y10^4*y11^4*y12*y13*y14^4*y15^3*y16^4*y17*y18 y1^2*y2^2*y3*y4^2*y5^2*y6^2*y7^2*y8*y9^2*y10^2*y11^3*y12*y13*y14^2*y15*y16^3*y17*y18 y1^3*y2^3*y3^2*y4^4*y5^4*y6^4*y7^3*y8^2*y9^3*y10^3*y11^4*y12*y13*y14^3*y15^2*y16^4*y17*y18 y1^4*y2^4*y3^3*y4^4*y5^4*y6^4*y7^4*y8^3*y9^4*y10^4*y11^4*y12*y13*y14^4*y15^3*y16^4*y17*y18
f21 f12 f11
y1^5*y2^5*y3^3*y4^5*y5^5*y6^5*y7^5*y8^3*y9^4*y10^4*y11^6*y12^2*y13^2*y14^5*y15^3*y16^6*y17^2*y18^2 -y1^6*y2^6*y3^4*y4^6*y5^6*y6^6*y7^6*y8^4*y9^5*y10^5*y11^7*y12^2*y13^2*y14^6*y15^4*y16^7*y17^2*y18^2 y1^9*y2^9*y3^6*y4^8*y5^8*y6^8*y7^9*y8^6*y9^7*y10^7*y11^9*y12^3*y13^3*y14^9*y15^6*y16^10*y17^3*y18^3
d1 d2 d3 d4
y1*y2^2*y3*y4*y5^2*y6^2*y7^2*y8*y9*y10^2*y11^3*y12*y13*y14^2*y15*y16^3*y17*y18 y1*y3*y4*y5*y6^2*y7*y8*y9*y10*y11*y14*y15*y16 y1*y2*y3*y4*y8*y9*y10*y14*y15 y1*y2*y3*y4*y5*y7*y8*y9*y15
d2== h33/h44 d3 == h22/h33 d1 == h44
True True True
#### so d4
def build_pb_mat(fn_list,mat): res=matrix(QQ,len(fn_list)) for i,f in enumerate(fn_list): for j,g in enumerate(fn_list): res[i,j]=PB(f,g,mat=mat)/(f*g) return res
build_pb_mat(cluster_fn,gsv_mat)
[ 0 1/2 1/2 1 0 1/2 1 3/2 0 1 3/2 2] [-1/2 0 1/2 1 1 1 2 2 3/2 2 5/2 3] [-1/2 -1/2 0 1 0 1/2 1 3/2 3/2 2 2 3] [ -1 -1 -1 0 -1 -1 0 0 -1 0 0 0] [ 0 -1 0 1 0 0 2 1 0 1 1 0] [-1/2 -1 -1/2 1 0 0 2 1 3/2 2 3/2 1] [ -1 -2 -1 0 -2 -2 0 -1 -1 0 -1 -2] [-3/2 -2 -3/2 0 -1 -1 1 0 1/2 2 1/2 1] [ 0 -3/2 -3/2 1 0 -3/2 1 -1/2 0 1 -1/2 -2] [ -1 -2 -2 0 -1 -2 0 -2 -1 0 -2 -4] [-3/2 -5/2 -2 0 -1 -3/2 1 -1/2 1/2 2 0 -1] [ -2 -3 -3 0 0 -1 2 -1 2 4 1 0]
cluster_fn = [h44,h34,h24,h14,h33,h23,h13,f21,h22,h12,f12,f11] exchange_quiver=matrix([[0,-1,0,0,0,0,0,0,0,0,0,0],[1,0,-1,0,-1,1,0,0,0,0,0,0],[0,1,0,-1,0,-1,1,0,0,0,0,0],[0,0,1,0,0,0,0,0,0,1,-1,0],[0,1,0,0,0,-1,0,0,0,0,0,0],[0,-1,1,0,1,0,-1,0,-1,1,0,0],[0,0,-1,0,0,1,0,1,0,0,-1,0],[0,0,0,0,0,0,-1,0,0,0,2,-1],[0,0,0,0,0,1,0,0,0,-1,0,0],[0,0,0,-1,0,-1,0,0,1,0,1,0],[0,0,0,1,0,0,1,-2,0,-1,0,1],[0,0,0,0,0,0,0,1,0,0,-1,0]]); mod_exchange_quiver = matrix(QQ,[[0,-1,0,0,0,0,0,0,0,0,0,0],[1,0,-1,0,-1,1,0,0,0,0,0,0],[0,1,0,-1,0,-1,1,0,0,0,0,0],[0,0,1,0,0,0,0,0,0,1,-1,0],[0,1,0,0,0,-1,0,0,0,0,0,0],[0,-1,1,0,1,0,-1,0,-1,1,0,0],[0,0,-1,0,0,1,0,1,0,0,-1,0],[0,0,0,0,0,0,-1,0,0,0,2,-1],[0,0,0,0,0,1,0,0,0,-1,0,0],[0,0,0,-1,0,-1,0,0,1,0,1,0],[0,0,0,1,0,0,1,-2,0,-1,0,1],[0,0,0,0,0,0,0,1,0,0,-1,0]]); mod_exchange_quiver[0,4]=1/2 mod_exchange_quiver[4,0]=-1/2 mod_exchange_quiver[4,8]=1/2 mod_exchange_quiver[8,4]=-1/2
U_gsv.characteristic_polynomial()
x^4 + (y1*y2*y3*y4*y5*y6*y7*y8*y9*y10*y11*y12*y14*y15*y16*y18 + y1*y2*y3*y4*y5*y6*y7*y8*y9*y10*y11*y12*y14*y15*y16 + y1*y2*y3*y4*y5*y6*y7*y8*y9*y10*y11*y13*y14*y15*y16 + y1*y2*y3*y4*y5*y6*y7*y8*y9*y10*y11*y14*y15*y16*y17)*x^3 + (y1^2*y2^2*y3^2*y4^2*y5^2*y6^2*y7^2*y8^2*y9^2*y10^2*y11^2*y12^2*y14^2*y15^2*y16^2*y18 + y1^2*y2^2*y3^2*y4^2*y5^2*y6^2*y7^2*y8^2*y9^2*y10^2*y11^2*y12*y13*y14^2*y15^2*y16^2*y18 + y1^2*y2^2*y3^2*y4^2*y5^2*y6^2*y7^2*y8^2*y9^2*y10^2*y11^2*y12*y14^2*y15^2*y16^2*y17*y18 + y1^2*y2^2*y3^2*y4^2*y5^2*y6^2*y7^2*y8^2*y9^2*y10^2*y11^2*y12*y13*y14^2*y15^2*y16^2 + y1^2*y2^2*y3^2*y4^2*y5^2*y6^2*y7^2*y8^2*y9^2*y10^2*y11^2*y12*y14^2*y15^2*y16^2*y17 + y1^2*y2^2*y3^2*y4^2*y5^2*y6^2*y7^2*y8^2*y9^2*y10^2*y11^2*y13*y14^2*y15^2*y16^2*y17)*x^2 + (y1^3*y2^3*y3^3*y4^3*y5^3*y6^3*y7^3*y8^3*y9^3*y10^3*y11^3*y12^2*y13*y14^3*y15^3*y16^3*y18 + y1^3*y2^3*y3^3*y4^3*y5^3*y6^3*y7^3*y8^3*y9^3*y10^3*y11^3*y12^2*y14^3*y15^3*y16^3*y17*y18 + y1^3*y2^3*y3^3*y4^3*y5^3*y6^3*y7^3*y8^3*y9^3*y10^3*y11^3*y12*y13*y14^3*y15^3*y16^3*y17*y18 + y1^3*y2^3*y3^3*y4^3*y5^3*y6^3*y7^3*y8^3*y9^3*y10^3*y11^3*y12*y13*y14^3*y15^3*y16^3*y17)*x + y1^4*y2^4*y3^4*y4^4*y5^4*y6^4*y7^4*y8^4*y9^4*y10^4*y11^4*y12^2*y13*y14^4*y15^4*y16^4*y17*y18
#11: C11*(l1-l2)*...(l1-l4) #12:C41
### Vertices on left: all same thing, det C ### U = C^-1 * L * C ### Vertices of splitback quiver: ### 16: C[2,3,4],[1,2,3] ### 17: C[3,4],[1,2] ### 18: C[4],[1] ### 12: C[4],[4] ### 6: C[3,4][3,4] ### 2: C[2,3,4],[2,3,4] ### 10: C[2,3,4],[1,2,4] ### 5: C[2,3,4],[1,3,4] ### 13: C[3,4],[L*C_col1, C_col4] ### 14: L*C_col1, L*C_col2,C_col4, rows=[2,3,4] ### 7: L*C_col1, L*C_col3, L*C_col4, rows=[2,3,4] ### 3: [2,3,4,L*C_col1] ### 8: [3,4, L*Col_2, L*col1] ### 15: [4, L*Co1, L*Col2, L*Col3]
exchange_quiver.kernel()
Free module of degree 12 and rank 0 over Integer Ring Echelon basis matrix: []
def build_X_coords(mat=exchange_quiver,fns=cluster_fn): res=[] for i in range(len(cluster_fn)): toAdd=1 for j,f in enumerate(cluster_fn): toAdd=toAdd*f^(mat[i,j]) res.append(toAdd) return res
exchange_quiver
[ 0 -1 0 0 0 0 0 0 0 0 0 0] [ 1 0 -1 0 -1 1 0 0 0 0 0 0] [ 0 1 0 -1 0 -1 1 0 0 0 0 0] [ 0 0 1 0 0 0 0 0 0 1 -1 0] [ 0 1 0 0 0 -1 0 0 0 0 0 0] [ 0 -1 1 0 1 0 -1 0 -1 1 0 0] [ 0 0 -1 0 0 1 0 1 0 0 -1 0] [ 0 0 0 0 0 0 -1 0 0 0 2 -1] [ 0 0 0 0 0 1 0 0 0 -1 0 0] [ 0 0 0 -1 0 -1 0 0 1 0 1 0] [ 0 0 0 1 0 0 1 -2 0 -1 0 1] [ 0 0 0 0 0 0 0 1 0 0 -1 0]
Xs=build_X_coords() modXs=build_X_coords(mat=-2*mod_exchange_quiver)
for v in Xs: print v
1/(y1^2*y2^2*y3*y4*y5^2*y6^2*y7^2*y8*y9*y10^2*y11^3*y12^2*y13*y14^2*y15*y16^3*y17*y18) y2 y5 -y10 1/(y1*y2*y3*y4^2*y5*y6^2*y7*y8*y9*y10*y11*y14*y15*y16) y7 -y6 y11 1/(y1*y2*y3*y4*y5*y7*y8*y9^2*y10*y14*y15) -y1^4*y2^4*y3^4*y4^4*y5^4*y6^4*y7^4*y8^4*y9^4*y10^4*y11^4*y12^2*y13*y14^5*y15^4*y16^4*y17*y18 y16 1/(-y1*y2*y3*y4*y5*y6*y7*y8*y9*y10*y11*y14*y15*y16)
h33
y1^2*y2^2*y3^2*y4^2*y5^3*y6^4*y7^3*y8^2*y9^2*y10^3*y11^4*y12^2*y13*y14^3*y15^2*y16^4*y17*y18
### some observations
d2/(Xs[0]*h33)
y1
1/(Xs[4]*d2)
y2*y4
1/(Xs[8]*d3)
y5*y7*y9
Xs[9]/(d3^2*h33)
(-y5*y7)/y10
Xs[11]*d2
y6/(-y2)
X_pb_mat =build_pb_mat(Xs) mod_X_pb_mat = build_pb_mat(modXs)
X_pb_mat.matrix_from_rows_and_columns([1,2,5,3,6,9,10,7,11],[1,2,5,3,6,9,10,7,11])+exchange_quiver.matrix_from_rows_and_columns([1,2,5,3,6,9,10,7,11],[1,2,5,3,6,9,10,7,11])
[0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0]
mod_X_pb_mat/4
[ 0 1 0 0 -1/2 0 0 0 1 -2 0 1/2] [ -1 0 1 0 1 -1 0 0 0 0 0 0] [ 0 -1 0 1 0 1 -1 0 0 0 0 0] [ 0 0 -1 0 0 0 0 0 0 -1 1 0] [ 1/2 -1 0 0 0 1 0 0 -1/2 0 0 0] [ 0 1 -1 0 -1 0 1 0 1 -1 0 0] [ 0 0 1 0 0 -1 0 -1 0 0 1 0] [ 0 0 0 0 0 0 1 0 0 0 -2 1] [ -1 0 0 0 1/2 -1 0 0 0 3 0 -1/2] [ 2 0 0 1 0 1 0 0 -3 0 -1 0] [ 0 0 0 -1 0 0 -1 2 0 1 0 -1] [-1/2 0 0 0 0 0 0 -1 1/2 0 1 0]
X_pb_mat + exchange_quiver
Error in lines 1-1 Traceback (most recent call last): File "/projects/sage/sage-7.5/local/lib/python2.7/site-packages/smc_sagews/sage_server.py", line 995, in execute exec compile(block+'\n', '', 'single') in namespace, locals File "", line 1, in <module> NameError: name 'X_pb_mat' is not defined
Kcas1=upper_gsv[1,1]*(lower_gsv)[3,3]/(lower_gsv)[2,2] Kcas2=(upper_gsv[2,2]/upper_gsv[1,1])*(lower_gsv[2,2]/lower_gsv[1,1]) Kcas3=(upper_gsv[3,3]/upper_gsv[2,2])*(lower_gsv)[1,1]
Error in lines 1-1 Traceback (most recent call last): File "/projects/sage/sage-7.5/local/lib/python2.7/site-packages/smc_sagews/sage_server.py", line 995, in execute exec compile(block+'\n', '', 'single') in namespace, locals File "", line 1, in <module> NameError: name 'upper_gsv' is not defined
Kcas1 Kcas2 Kcas3
Error in lines 1-1 Traceback (most recent call last): File "/projects/sage/sage-7.5/local/lib/python2.7/site-packages/smc_sagews/sage_server.py", line 995, in execute exec compile(block+'\n', '', 'single') in namespace, locals File "", line 1, in <module> NameError: name 'Kcas1' is not defined
f2
Error in lines 1-1 Traceback (most recent call last): File "/projects/sage/sage-7.5/local/lib/python2.7/site-packages/smc_sagews/sage_server.py", line 995, in execute exec compile(block+'\n', '', 'single') in namespace, locals File "", line 1, in <module> NameError: name 'f2' is not defined
U_gsv.det()
Error in lines 1-1 Traceback (most recent call last): File "/projects/sage/sage-7.5/local/lib/python2.7/site-packages/smc_sagews/sage_server.py", line 995, in execute exec compile(block+'\n', '', 'single') in namespace, locals File "", line 1, in <module> NameError: name 'U_gsv' is not defined
f1/(Kcas1*Kcas2*Kcas3) f2/(Kcas1*Kcas2*Kcas3) f3/(Kcas1*Kcas2*Kcas3) f4/(Kcas1*Kcas2*Kcas3)
Error in lines 1-1 Traceback (most recent call last): File "/projects/sage/sage-7.5/local/lib/python2.7/site-packages/smc_sagews/sage_server.py", line 995, in execute exec compile(block+'\n', '', 'single') in namespace, locals File "", line 1, in <module> NameError: name 'f1' is not defined
cf(f1,f5)
Error in lines 1-1 Traceback (most recent call last): File "/projects/sage/sage-7.5/local/lib/python2.7/site-packages/smc_sagews/sage_server.py", line 995, in execute exec compile(block+'\n', '', 'single') in namespace, locals File "", line 1, in <module> NameError: name 'cf' is not defined
z=to_mon(v)^2
#s_U_gsv.matrix_from_rows_and_columns([0,1],[0,1]).det() #s_U_gsv.matrix_from_rows_and_columns([1,2],[0,1]).det() #s_U_gsv.matrix_from_rows_and_columns([2,3],[0,1]).det() #s_U_gsv.matrix_from_rows_and_columns([0,1,2],[0,1,2]).det() #s_U_gsv.matrix_from_rows_and_columns([1,2,3],[0,1,2]).det()
def build_phi_1_fn(mat=U_gsv): phi_1_mat=matrix(FractionField(R),3,3) phi_1_mat[0,0]=mat[1,0] phi_1_mat[1,0]=mat[2,0] phi_1_mat[2,0]=mat[3,0] phi_1_mat[0,1]=((mat)^2)[1,0] phi_1_mat[1,1]=((mat)^2)[2,0] phi_1_mat[2,1]=((mat)^2)[3,0] phi_1_mat[0,2]=((mat)^3)[1,0] phi_1_mat[1,2]=((mat)^3)[2,0] phi_1_mat[2,2]=((mat)^3)[3,0] return phi_1_mat.det()
def build_phi_2_fn(mat=U_gsv): phi_1_mat=matrix(FractionField(R),3,3) phi_1_mat[0,0]=mat[1,0] phi_1_mat[1,0]=mat[2,0] phi_1_mat[2,0]=mat[3,0] phi_1_mat[0,1]=mat[1,1] phi_1_mat[1,1]=mat[2,1] phi_1_mat[2,1]=mat[3,1] phi_1_mat[0,2]=((mat)^2)[1,0] phi_1_mat[1,2]=((mat)^2)[2,0] phi_1_mat[2,2]=((mat)^2)[3,0] return phi_1_mat.det()
def build_phi_3_fn(mat=U_gsv): phi_1_mat=matrix(FractionField(R),2,2) phi_1_mat[0,0]=mat[2,0] phi_1_mat[1,0]=mat[3,0] phi_1_mat[0,1]=((mat)^2)[2,0] phi_1_mat[1,1]=((mat)^2)[3,0] return phi_1_mat.det()
phi1= build_phi_1_fn() phi2=build_phi_2_fn() phi3=build_phi_3_fn()
cluster_fn=[f1,f2,f3,f4,f5,phi1,phi2,phi3]
def build_pb_mat(fn_list): res=matrix(QQ,len(fn_list)) for i,f in enumerate(fn_list): for j,g in enumerate(fn_list): res[i,j]=cf(f,g) return res
build_pb_mat(cluster_fn)
[ 0 0 2 0 1 0 1 1] [ 0 0 2 3/2 2 1 3/2 1] [ -2 -2 0 -1 0 -2 -1 -1] [ 0 -3/2 1 0 1 -2 -1/2 -1/2] [ -1 -2 0 -1 0 -4 -2 -2] [ 0 -1 2 2 4 0 1 -1] [ -1 -3/2 1 1/2 2 -1 0 -1/2] [ -1 -1 1 1/2 2 1 1/2 0]
w
[ 0 0 0 -1] [ 0 0 1 0] [ 0 -1 0 0] [ 1 0 0 0]
lower_gsv[,1]/lower_gsv[1,1]
y5*y6^2*y7*y8*y11*y16 + y6^2*y7*y8*y11*y16 + y6*y7*y8*y11*y16 + y6*y7*y8*y11 + y6*y7*y8 + y7*y8 + y8
U_gsv = upper_gsv*w*lower_gsv*(w.inverse())
Error in lines 1-1 Traceback (most recent call last): File "/projects/sage/sage-7.5/local/lib/python2.7/site-packages/smc_sagews/sage_server.py", line 995, in execute exec compile(block+'\n', '', 'single') in namespace, locals File "", line 1, in <module> NameError: name 'upper_gsv' is not defined
U_gsv[0,0] U_gsv[1,0] U_gsv[2,0] U_gsv[3,0]
y1*y2^2*y3*y4*y5^2*y6^2*y7^2*y8*y9*y10^2*y11^3*y12^2*y13*y14^2*y15*y16^3*y17*y18 y1^2*y2^2*y3*y4*y5^2*y6^2*y7^2*y8*y9*y10^2*y11^3*y12^2*y13*y14^2*y15*y16^3*y17*y18 y1^2*y2^2*y3*y4^2*y5^2*y6^2*y7^2*y8*y9*y10^2*y11^3*y12^2*y13*y14^2*y15*y16^3*y17*y18 y1^2*y2^2*y3*y4^2*y5^2*y6^2*y7^2*y8*y9^2*y10^2*y11^3*y12^2*y13*y14^2*y15*y16^3*y17*y18
upper_gsv.matrix_from_rows_and_columns([2,3],[0,1]).det()
y1^2*y2*y3*y4^2*y5*y9
get_path(lower_path[3,2]/lower_path[2,2])
[y3, y7, y13, y18, y11, y5]
pretty_print(upper_path.subs({y2:-1,y6:-1,y12:-1,y5:1/y7,y3:-1/y1,y4:-1/y8,y11:1/y13,y10:1/y14,y9:-1/y15}))
(1000010000100001)\displaystyle \left(\begin{array}{rrrr} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array}\right)
upper_path.subs({y2:-1,y6:-1})[3,0].factor()
(y12 + 1) * y11 * y10 * y9 * y5 * y4 * y1
### how to get E1: E1 = upper_path[1,0]/upper_path[0,0] ### how to get E2: E2 = upper_path[2,1]/upper_path[1,1] ### how to get E3: E3 = upper_path[3,2]/upper_path[2,2]
E3
y9*y10*y11*y12*y13*y14 + y9*y10*y11*y12*y13 + y9*y10*y11*y12 + y9*y10*y11 + y9*y10 + y9
get_path(E1) get_path(E2) get_path(E3)
[y1, y2] [y4, y5, y6, y7] [y9, y10, y11, y12, y13, y14]
### Now let's self-fold:
## The path for E's: short_path = rect(y1,y4,y9)*hexa(y5,y2,y7)*rect(y3,y8,y15)
## folded E1 e1 = short_path[1,0]/short_path[0,0]
## folded E2 e2 = short_path[2,1]/short_path[1,1]
## folded E3 e3 = short_path[3,2]/short_path[2,2]
e1,e2,e3
(y1, y2*y4 + y4, y5*y7*y9 + y5*y9 + y9)
### the path for F's long_path = rect(y15,y8,y3)*hexa(y2,y7,y5)*rect(y14,y6,y10)*hexa(y11,y13,y12)*rect(y16,y17,y18)*hexa(y12,y11,y13)*rect(y10,y6,y14)*hexa(y7,y5,y2)*rect(y9,y4,y1)
## folded F3 f3 = long_path[1,0]/long_path[0,0]
## folded F2 f2 = long_path[2,1]/long_path[1,1]
## folded F3 f1 = long_path[3,2]/long_path[2,2]
how_long(f1),how_long(f2)
(12, 8)
F1
[1 0 0 0] [1 1 0 0] [0 0 1 0] [0 0 0 1]
geom_folding_muts=[2, 6, (12,18), 5, 7, 11, 13, 10, 6, 14] geom_gsv = [(17,12),16,11,(13,17)]
folded_feed=build_feed(initial_feed,geom_folding_muts) step1_feed = build_feed(folded_feed,[(17,12)])
how_long(folded_feed.inv_mutation_auto([(17,12)],f1))
16
gsv_f1 = folded_feed.inv_mutation_auto(geom_gsv,f1) gsv_f2 = folded_feed.inv_mutation_auto(geom_gsv,f2) gsv_f3 = folded_feed.inv_mutation_auto(geom_gsv,f3)
how_long(folded_feed.inv_mutation_auto(geom_gsv[:],f2))
7
cap=rect(y14,y6,y10)*hexa(y11,y13,y12)*rect(y16,y17,y18)*hexa(y12,y11,y13)*rect(y10,y6,y14)
hol = rect(y16,y17,y18)*hexa(y12,y11,y13)
h1 = hol.trace()
h2 = ((hol.trace())^2 - (hol^2).trace())/2
y11*y12*y13*y16*y17*y18 + y11*y16*y17 + y16 + 1
(y11^3*y12*y13^6*y16^2*y17^2*y18 + 2*y11^3*y12*y13^5*y16^2*y17^2*y18 + y11^3*y12*y13^5*y16*y17^2*y18 + y11^3*y12*y13^4*y16^2*y17^2*y18 + y11^3*y13^6*y16^2*y17 + y11^3*y12*y13^4*y16*y17^2*y18 + y11^2*y12*y13^5*y16*y17^2*y18 + 2*y11^3*y13^5*y16^2*y17 + 2*y11^2*y12*y13^4*y16*y17^2*y18 + 2*y11^3*y13^5*y16*y17 + y11^3*y13^4*y16^2*y17 + y11^2*y12*y13^3*y16*y17^2*y18 + 2*y11^3*y13^4*y16*y17 + 3*y11^2*y13^5*y16*y17 + y11^3*y13^4*y17 + 6*y11^2*y13^4*y16*y17 + y11*y13^5*y16*y17 + 2*y11^2*y13^4*y17 + 3*y11^2*y13^3*y16*y17 + 3*y11*y13^4*y16*y17 + y11*y13^4*y16 + 2*y11^2*y13^3*y17 + y11*y13^4*y17 + 3*y11*y13^3*y16*y17 + 3*y11*y13^3*y16 + 2*y11*y13^3*y17 + y11*y13^2*y16*y17 + 3*y11*y13^2*y16 + y11*y13^2*y17 + y11*y13*y16)/(y11^3*y12*y13^6*y16^2*y17^2*y18 + 2*y11^3*y12*y13^5*y16^2*y17^2*y18 + 2*y11^3*y12*y13^5*y16*y17^2*y18 + y11^3*y12*y13^4*y16^2*y17^2*y18 + 2*y11^3*y12*y13^4*y16*y17^2*y18 + 3*y11^2*y12*y13^5*y16*y17^2*y18 + y11^3*y12*y13^4*y17^2*y18 + 6*y11^2*y12*y13^4*y16*y17^2*y18 + y11*y12*y13^5*y16*y17^2*y18 + y11^3*y13^5*y16*y17 + 2*y11^2*y12*y13^4*y17^2*y18 + 3*y11^2*y12*y13^3*y16*y17^2*y18 + 3*y11*y12*y13^4*y16*y17^2*y18 + y11^3*y13^4*y16*y17 + 2*y11^2*y13^5*y16*y17 + y11*y12*y13^4*y16*y17*y18 + 2*y11^2*y12*y13^3*y17^2*y18 + y11*y12*y13^4*y17^2*y18 + 3*y11*y12*y13^3*y16*y17^2*y18 + y11^3*y13^4*y17 + 4*y11^2*y13^4*y16*y17 + y11*y13^5*y16*y17 + 3*y11*y12*y13^3*y16*y17*y18 + 2*y11*y12*y13^3*y17^2*y18 + y11*y12*y13^2*y16*y17^2*y18 + 3*y11^2*y13^4*y17 + 2*y11^2*y13^3*y16*y17 + 3*y11*y13^4*y16*y17 + 3*y11*y12*y13^2*y16*y17*y18 + y11*y12*y13^2*y17^2*y18 + y11*y13^4*y16 + 3*y11^2*y13^3*y17 + 3*y11*y13^4*y17 + 3*y11*y13^3*y16*y17 + y11*y12*y13*y16*y17*y18 + 3*y11*y13^3*y16 + 6*y11*y13^3*y17 + y13^4*y17 + y11*y13^2*y16*y17 + y11*y13^3 + 3*y11*y13^2*y16 + 3*y11*y13^2*y17 + 3*y13^3*y17 + 2*y11*y13^2 + y13^3 + y11*y13*y16 + 3*y13^2*y17 + y11*y13 + 3*y13^2 + y13*y17 + 3*y13 + 1)
hol.det()
y11^2*y12*y13*y16^3*y17^2*y18
get_path(cap[1,0]) get_path(cap[2,1]/cap[1,1]) get_path(cap[3,2]/cap[2,2])
[y14, y16] [y6, y13, y17, y11] [y10, y11, y12, y18, y12, y13]
cap[3,2].factor()
y17 * y16 * y14 * y13 * y11 * y10^2 * y6^2 * (y11*y12^2*y13*y18 + y11*y12^2*y18 + y11*y12*y18 + y11*y12 + y11 + 1)
10 12 17
pre = y10^2*y6^2*y11*y16*y14
from_network = pre * (1 + y16 + y16*y13 + y16*y13*y17*(1+y13) +y16*y13*y17*y12*(1+y13) + y16*y13^2*y17^2*y12*(1+y13+y13*y11) + y16*y13^2*y17^2*y12^2*y18*(1+y13+y13*y11) + y16*y13^2*y17^2*y12*y18*(1+y13+y13*y11) + y16*y13*y17*y12*y18*(1+y13) + y16*y13^3*y17^3*y12^2*y18*(1+y11) + y16*y13^4*y17^3*y12^2*y18*(1+y11)^2 + y16^2*y13^4*y17^3*y12^2*y18*y11^2)
how_long(from_network)
24
from_network == gsv_cap[3,2]
True
show_monomials(from_network)
y6^2*y10^2*y11^3*y12^2*y13^4*y14*y16^3*y17^3*y18 y6^2*y10^2*y11^3*y12^2*y13^4*y14*y16^2*y17^3*y18 2*y6^2*y10^2*y11^2*y12^2*y13^4*y14*y16^2*y17^3*y18 y6^2*y10^2*y11^2*y12^2*y13^3*y14*y16^2*y17^3*y18 y6^2*y10^2*y11*y12^2*y13^4*y14*y16^2*y17^3*y18 y6^2*y10^2*y11^2*y12^2*y13^3*y14*y16^2*y17^2*y18 y6^2*y10^2*y11*y12^2*y13^3*y14*y16^2*y17^3*y18 y6^2*y10^2*y11^2*y12*y13^3*y14*y16^2*y17^2*y18 y6^2*y10^2*y11*y12^2*y13^3*y14*y16^2*y17^2*y18 y6^2*y10^2*y11^2*y12*y13^3*y14*y16^2*y17^2 y6^2*y10^2*y11*y12^2*y13^2*y14*y16^2*y17^2*y18 y6^2*y10^2*y11*y12*y13^3*y14*y16^2*y17^2*y18 y6^2*y10^2*y11*y12*y13^3*y14*y16^2*y17^2 y6^2*y10^2*y11*y12*y13^2*y14*y16^2*y17^2*y18 y6^2*y10^2*y11*y12*y13^2*y14*y16^2*y17^2 y6^2*y10^2*y11*y12*y13^2*y14*y16^2*y17*y18 y6^2*y10^2*y11*y12*y13^2*y14*y16^2*y17 y6^2*y10^2*y11*y12*y13*y14*y16^2*y17*y18 y6^2*y10^2*y11*y12*y13*y14*y16^2*y17 y6^2*y10^2*y11*y13^2*y14*y16^2*y17 y6^2*y10^2*y11*y13*y14*y16^2*y17 y6^2*y10^2*y11*y13*y14*y16^2 y6^2*y10^2*y11*y14*y16^2 y6^2*y10^2*y11*y14*y16
how_long(gsv_cap[3,0]) how_long(gsv_cap[3,1]) how_long(gsv_cap[3,2]) how_long(gsv_cap[3,3])
7 24 24 1
how_long(gsv_cap[3,2]/gsv_cap[2,2])
24
cap[1,0] (cap[2,1]/cap[1,1]) (cap[3,2]/cap[2,2])
y14*y16 + y14 y6*y11*y13*y17 + y6*y13*y17 + y6*y13 + y6 y10*y11*y12^2*y13*y18 + y10*y11*y12^2*y18 + y10*y11*y12*y18 + y10*y11*y12 + y10*y11 + y10
folded_feed.inv_mutation_auto([(17,12)],cap[1,0]) folded_feed.inv_mutation_auto([(17,12)],cap[2,1]/cap[1,1]) folded_feed.inv_mutation_auto([(17,12)],cap[3,2]/cap[2,2])
y14*y16 + y14 y6*y11*y13 + y6*y13 + y6 y10*y11*y12^2*y13*y17^3*y18 + y10*y11*y12^2*y17^3*y18 + y10*y11*y12^2*y17^2*y18 + y10*y11*y12*y17^2*y18 + y10*y11*y12*y17^2 + y10*y11*y12*y17*y18 + y10*y11*y12*y17 + y10*y11*y17 + y10*y11 + y10
### Now we have matrix formulas for the self-folded F's we can translate them into dimer counts etc.
folded_mat = H3(y3)*H2(y8)*H1(y15)*F3*H3(y2)*F2*H2(y7)*F3*H3(y5)*F1*F2*H2(y6)*F3*H3(y10)* F3*H3(y11)*F2*H2(y13)*F3*H3(y12)*H1(y14)*F1*F2*H2(y17)*F3 *H3(y18)* F3*H3(y12)*F2*H2(y11)*F3*H3(y13)*H1(y16)*F1*F2*H2(y6)*F3 *H3(y14)*F3*H3(y7)*F2*H2(y5)*F3*H3(y2)*H1(y10)*F1*F2*F3*H1(y9)*H2(y4)*H3(y1)
step1 = H3(y3)*H2(y8)*H1(y15)*F3*H3(y2)*F2*H2(y7)*F3*H3(y5)*F1*H1(y14)*F2*H2(y6)*F3*H3(y10)* F3*H3(y11)*F2*H2(y13)*F3*H3(y17)*F3*H3(y12)*F1*H1(y16)*F3 *H3(y18)*F3*H3(y17/y18)*F2*H2(y11)* F3*H3(y18)*F3*H3(y12)*F3*H3(y17)*F3*H3(y13)*F1*H1(y10)*F2*H2(y6)*F3 *H3(y14)*F3*H3(y7)*F2*H2(y5)*F3*H3(y2)*F1*F2*F3*H1(y9)*H2(y4)*H3(y1)
folded_mat==long_path
True
step1 == mutate_matrix(folded_feed,[(17,12)],folded_mat)
True
step2 = H3(y3)*H2(y8)*H1(y15)*F3*H3(y2)*F2*H2(y7)*F3*H3(y5)*F1*H1(y14)*F2*H2(y6)*F3*H3(y10)*F3*H3(y16)*F3*H3(y11)* F2*H2(y13)*F3*H3(y17)*F3*H3(y12)*F3 *H3(y18)*F3*H3(y17/y18)*F2*H2(y16)*F1*H1(y10)*F2*H2(y11)* F3*H3(y18)*F3*H3(y12)*F3*H3(y17)*F3*H3(y13)*F2*H2(y6)*F3*H3(y16)*F3 *H3(y14)*F3*H3(y7)*F2*H2(y5)*F3*H3(y2)*F1*F2*F3*H1(y9)*H2(y4)*H3(y1)
mutated2 = mutate_matrix(folded_feed,[(17,12),16],folded_mat) mutated3 = mutate_matrix(folded_feed,[(17,12),16,11],folded_mat)
step2==mutated2
True
get_path(mutated3[1,0]/mutated3[0,0])
[y15, y14, y10]
get_path(mutated3[2,1]/mutated3[1,1])
[y8, y7, y6, y11, y13, y16, y6, y5]
show_monomials((mutated3[3,2]/mutated3[2,2]).subs({y11:0}))
y2*y3*y5*y10*y12^2*y16*y17^3*y18 y2*y3*y5*y10*y12^2*y16*y17^2*y18 y2*y3*y5*y10*y12*y16*y17^2*y18 y2*y3*y5*y10*y12*y16*y17^2 y2*y3*y5*y10*y12*y16*y17*y18 y2*y3*y5*y10*y12*y16*y17 y2*y3*y5*y10*y16*y17 y2*y3*y5*y10*y16 y2*y3*y5*y10 y2*y3*y5 y2*y3 y3
mess=(mutated3[3,2]/mutated3[2,2])
show_monomials(diff(((1/2)*y12^2*diff(mess,y12,2)),y13))
y2^2*y3*y5*y7*y10*y11^2*y12^2*y14*y16^2*y17^3*y18 y2*y3*y5*y7*y10*y11^2*y12^2*y14*y16^2*y17^3*y18 y2*y3*y5*y10*y11^2*y12^2*y14*y16^2*y17^3*y18 y2*y3*y5*y10*y11^2*y12^2*y16^2*y17^3*y18 y2*y3*y5*y10*y11^2*y12^2*y16*y17^3*y18 y2*y3*y5*y10*y11*y12^2*y16*y17^3*y18
show_monomials(((1/2)*y12^2*diff(mess,y12,2)/(y2*y3*y5*y10)).subs({y13:0}))
y11^2*y12^2*y16*y17^3*y18 2*y11*y12^2*y16*y17^3*y18 y11*y12^2*y16*y17^2*y18 y12^2*y16*y17^3*y18 y12^2*y16*y17^2*y18
show_monomials((mutated3[3,2]/mutated3[2,2]))
y2^2*y3*y5*y7*y10*y11^2*y12^2*y13*y14*y16^2*y17^3*y18 y2*y3*y5*y7*y10*y11^2*y12^2*y13*y14*y16^2*y17^3*y18 y2*y3*y5*y10*y11^2*y12^2*y13*y14*y16^2*y17^3*y18 y2*y3*y5*y10*y11^2*y12^2*y13*y16^2*y17^3*y18 y2*y3*y5*y10*y11^2*y12^2*y13*y16*y17^3*y18 y2*y3*y5*y10*y11^2*y12^2*y16*y17^3*y18 y2*y3*y5*y10*y11*y12^2*y13*y16*y17^3*y18 2*y2*y3*y5*y10*y11*y12^2*y16*y17^3*y18 y2*y3*y5*y10*y11*y12^2*y16*y17^2*y18 y2*y3*y5*y10*y12^2*y16*y17^3*y18 y2*y3*y5*y10*y11*y12*y16*y17^2*y18 y2*y3*y5*y10*y12^2*y16*y17^2*y18 y2*y3*y5*y10*y11*y12*y16*y17^2 y2*y3*y5*y10*y12*y16*y17^2*y18 y2*y3*y5*y10*y12*y16*y17^2 y2*y3*y5*y10*y12*y16*y17*y18 y2*y3*y5*y10*y12*y16*y17 y2*y3*y5*y10*y16*y17 y2*y3*y5*y10*y16 y2*y3*y5*y10 y2*y3*y5 y2*y3 y3
get_path(mutated3[2,2])
[y4*y5*y6^2*y7*y8*y9*y10*y11*y13*y14*y15*y16]
gsv_mat = mutate_matrix(folded_feed,[(17,12),16,11,13],folded_mat)
show_monomials(gsv_mat[3,2]/gsv_mat[2,2]
gg = H1(y1)*H2(y2)*H3(y3)*F1*H1(y4)*F2*H2(y5)*F3*H3(y6)*F1*H1(y7)*F2*H2(y8)*F1*H1(y9)
gg[0,0].factor()
1
##### folded quivermat (no dashed, don't care) fC=matrix([[0,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[1,0,-1,-1,1,0,-1,1,0,0,0,0,0,0,0,0,0,0],[-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,1,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,-1,0,1,0,-1,1,0,-1,1,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,-1,0,0,0,-1,0,1,0,0,0,0,0],[0,1,0,0,-1,1,0,-1,0,0,0,0,0,-1,1,0,0,0],[0,-1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,0,0,0,-1,0,0,0,0,0,0,0,0],[0,0,0,0,-1,0,0,0,1,0,1,0,0,0,0,-1,0,0],[0,0,0,0,0,1,0,0,0,-1,0,1,-1,0,0,1,-1,0],[0,0,0,0,0,0,0,0,0,0,-1,0,1,0,0,0,0,0],[0,0,0,0,0,-1,0,0,0,0,1,-1,0,1,0,-1,1,0],[0,0,0,0,0,0,1,0,0,0,0,0,-1,0,-1,1,0,0],[0,0,0,0,0,0,-1,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,1,-1,0,1,-1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,1,0,-1,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]);