Generalized quiver mutations and 
single centered indices

Jan Manschot, Boris Pioline and Ashoke Sen, Sept. 2013, updated to CoulombHiggs 6.0, Dec 2020

SetDirectory[NotebookDirectory[]];

<<CoulombHiggs`

Examples of ordinary quiver mutations

Examples 1 and 2: 3-node quiver

aa=2;bb=2;cc=2;
Nvec={2,1,1};
Cvec={-31,10 Nvec[[1]]/Nvec[[2]]+2/Nvec[[2]],21 Nvec[[1]]/Nvec[[3]]-2/Nvec[[3]]};

aa=3;bb=4;cc=5;
Nvec={4,1,1};
Cvec={-571,256 Nvec[[1]]/Nvec[[2]]+1/Nvec[[2]],315 Nvec[[1]]/Nvec[[3]]-1/Nvec[[3]]};

Mat=(({{0, aa, -cc}, {-aa, 0, bb}, {cc, -bb, 0}}));
$QuiverMultiplier=1;
$QuiverMultiplierAssumption={};
$QuiverOmSbasis=1;
$QuiverMutationMult=1;
{Mat2,Cvec2,Nvec2}=Simplify[MutateRight[Mat,Cvec,Nvec,1]]

QCoulomb1=DropFugacity[CoulombBranchFormula[Mat,Cvec,Nvec]];

QCoulomb2=OmSToOmS2[DropFugacity[CoulombBranchFormula[Mat2,Cvec2,Nvec2]]];

Simplify[{QCoulomb1,QCoulomb2}]

Simplify[DropOmSNeg[MutateRightOmS[Mat,1,QCoulomb1]]-QCoulomb2/.OmS2[{0,1,1},t]->0]

Example 3: 4-node quiver

aa=5;bb=5;cc=2;dd=1;
Nvec={1,1,1,2};
Cvec={(250 Nvec[[4]]+1)/Nvec[[1]],(170Nvec[[4]]+2)/Nvec[[2]],(30 Nvec[[4]]-3)/Nvec[[3]],-450};

Mat={{0,aa,0,-dd},{-aa,0,bb,0},{0,-bb,0,cc},{dd,0,-cc,0}};
QuiverPlot[Mat]

{Mat2,Cvec2,Nvec2}=MutateRight[Mat,Cvec,Nvec,4]

QCoulomb1=DropFugacity[CoulombBranchFormula[Mat,Cvec,Nvec]];

QCoulomb2=OmSToOmS2[DropFugacity[CoulombBranchFormula[Mat2,Cvec2,Nvec2]]];

Simplify[{QCoulomb1,QCoulomb2}]

Simplify[DropOmSNeg[MutateRightOmS[Mat,4,QCoulomb1]]-QCoulomb2]

Examples of generalized quiver mutations

Example 1 : generalized Kronecker quiver

(* second order semi-primitive wall-crossing formula, from MPS1 *)
Nn=10;
IntToRat={Dp[m_,n_]:>If[{m,n}=={0,0},0,DivisorSum[GCD[m,n],MoebiusMu[#]Omp[m/#,n/#]/#^2 &]],
Dm[m_,n_]:>If[{m,n}=={0,0},0,DivisorSum[GCD[m,n],MoebiusMu[#]Omm[m/#,n/#]/#^2 &]],
Dp[m_,n_,y_]:>If[{m,n}=={0,0},0,DivisorSum[GCD[m,n],MoebiusMu[#](y-1/y)Omp[m/#,n/#,y^#]/#/(y^#-y^(-#)) &]],
Dm[m_,n_,y_]:>If[{m,n}=={0,0},0,DivisorSum[GCD[m,n],MoebiusMu[#](y-1/y)Omm[m/#,n/#,y^#]/#/(y^#-y^(-#)) &]]
};
RatToInt={Omp[m_,n_]:>If[{m,n}=={0,0},0,DivisorSum[GCD[m,n],Dp[m/#,n/#]/#^2 &]],
Omm[m_,n_]:>If[{m,n}=={0,0},0,DivisorSum[GCD[m,n],Dm[m/#,n/#]/#^2 &]],Omp[m_,n_,y_]:>If[{m,n}=={0,0},0,DivisorSum[GCD[m,n],(y-1/y)Dp[m/#,n/#,y^#]/#/(y^#-y^(-#)) &]],
Omm[m_,n_,y_]:>If[{m,n}=={0,0},0,DivisorSum[GCD[m,n],(y-1/y)Dm[m/#,n/#,y^#]/#/(y^#-y^(-#)) &]]};
Zp[m_]:=Sum[Omp[m,n]q^n,{n,0,Nn}];
Zm[m_]:=Sum[Omm[m,n]q^n,{n,0,Nn}];
Zsp1=Exp[Sum[(-1)^(l g12) l g12 Omp[0,l] q^l,{l,0,Nn}]];
Zpmod2=Zp[2]+ 1/2 Sum[(-1)^((j-i)g12) (j-i)g12 Omp[1,i]Omp[1,j] q^(i+j),{i,0,Nn},{j,i+1,Nn}];
Zmmod2=Zm[2]+ 1/2 Sum[(-1)^((j-i)g12) (j-i)g12 Omm[1,i]Omm[1,j] q^(i+j),{j,0,Nn},{i,j+1,Nn}];
Zsp2=Exp[Sum[(-1)^(2l g12)2 l g12 Omp[0,l] q^l,{l,0,Nn}]];
Eq1=Series[Zm[1]-Zp[1] Zsp1,{q,0,Nn}];
soOmm1=Solve[Eq1==0,Table[Omm[1,n],{n,0,Nn}]][[1]];
soOmp1=Solve[Eq1==0,Table[Omp[1,n],{n,0,Nn}]][[1]];
Eq2=Series[Zmmod2-Zpmod2 Zsp2/.soOmm1,{q,0,Nn}];
soOmm2=Solve[Eq2==0,Table[Omm[2,n],{n,0,Nn}]][[1]];
Eq2b=Series[Zmmod2-Zpmod2 Zsp2/.soOmp1,{q,0,Nn}];
soOmp2=Solve[Eq2b==0,Table[Omp[2,n],{n,0,Nn}]][[1]];

mm=1;p1=2;q1=3;p2=0;q2=0;M=q1+4q2;
repOmS={ OmS[{0,1},y_,t_]:>q1, OmS[{0,2},y_,t_]:>q2,OmS[{0,n_},y_,t_]:>0/;n>2,OmS[{1,0},y_,t_]:>p1,OmS[{2,0},y_,t_]:>p2,OmS[{n_,0},y_,t_]:>0/;n>2};

SemiPrimitive1=Sum[Dm[1,n]q^n,{n,0,Nn}]/.IntToRat/.soOmm2/.soOmm1/.RatToInt/.{Dp[p_,q_]:>OmS[{p,q},y,t],g12->-m}/.repOmS/.OmS[x___]->0/.m->mm

SemiPrimitive2=Sum[Dm[2,n]q^n,{n,0,Nn}]/.IntToRat/.soOmm2/.soOmm1/.RatToInt/.{Dp[p_,q_]:>OmS[{p,q},y,t],g12->-m}/.repOmS/.OmS[x___]->0/.m->mm

Simplify[{q^(mm M)(SemiPrimitive1/.q->1/q)/SemiPrimitive1,q^(2mm M)(SemiPrimitive2/.q->1/q)/SemiPrimitive2}]

Example 2 : generalized 3-node quiver without closed loop

aa=1;bb=-1;cc=2;
Nvec={1,4,1};
Cvec={(30 Nvec[[2]]+1)/Nvec[[1]],-80,(50 Nvec[[2]]-1)/Nvec[[3]]};

Mat=(({{0, aa, -cc}, {-aa, 0, bb}, {cc, -bb, 0}}));
$QuiverOmSbasis=0;
$QuiverRecursion=1;

(* (a) *)
repOmS={OmS[{0,1,0},y_,t_]:>2,OmS[{0,p_,0},y_,t_]:>0/;p>1};

(* (b) *)
repOmS={OmS[{0,1,0},y_,t_]:>3,OmS[{0,p_,0},y_,t_]:>0/;p>1};;

(* (c) *)repOmS={OmS[{0,1,0},y_,t_]:>y^2+1+1/y^2,OmS[{0,p_,0},y_,t_]:>0/;p>1};

(* (d) *)
repOmS={OmS[{0,1,0},y_,t_]:>4,OmS[{0,p_,0},y_,t_]:>0/;p>1};

(* (e) *)
repOmS={OmS[{0,1,0},y_,t_]:>t+1/t,OmS[{0,p_,0},y_,t_]:>0/;p>1};

(* (f) *)
repOmS={OmS[{0,2,0},y_,t_]:>1,OmS[{0,p_,0},y_,t_]:>0/;(p>2)||(p==1)};

(* (g) *)
repOmS={OmS[{0,2,0},y_,t_]:>-1,OmS[{0,2,0},y_,t_]:>1,OmS[{0,p_,0},y_,t_]:>0/;p>2};

$QuiverMutationMult=Sum[k^2OmS[{0,k,0},1,1],{k,0,4}]/.repOmS;
{Mat2,Cvec2,Nvec2}=Simplify[MutateRight[Mat,Cvec,Nvec,2]]

QCoulomb1=CoulombBranchFormula[Mat,Cvec,Nvec];

QCoulomb2=OmSToOmS2[CoulombBranchFormula[Mat2,Cvec2,Nvec2]];

QCoulomb1s=Simplify[MutateLeftOmS2[Mat2,2,DropOmSNeg[MutateRightOmS[Mat,2,QCoulomb1/.repOmS]]]]

QCoulomb2s=Simplify[MutateRightOmS[Mat,2,DropOmSNeg[MutateLeftOmS2[Mat2,2,QCoulomb2]]/.repOmS]]

Simplify[DropOmSNeg[MutateLeftOmS2[Mat2,2,QCoulomb2s]]-QCoulomb1s/.repOmS]

Example 3 : generalized 3-node quiver with closed loop

aa=2;bb=1;cc=5;
Nvec={1,3,1};
Cvec={(30 Nvec[[2]]+1)/Nvec[[1]],-80,(50 Nvec[[2]]-1)/Nvec[[3]]};
repOmS={OmS[{0,1,0},y_,t_]:>2,OmS[{0,p_,0},y_,t_]:>0/;p>1};

Mat=(({{0, aa, -cc}, {-aa, 0, bb}, {cc, -bb, 0}}));
$QuiverOmSbasis=0;
$QuiverRecursion=1;

$QuiverMutationMult=Sum[k^2OmS[{0,k,0},1,1],{k,0,4}]/.repOmS;
{Mat2,Cvec2,Nvec2}=Simplify[MutateRight[Mat,Cvec,Nvec,2]]

QCoulomb1=CoulombBranchFormula[Mat,Cvec,Nvec];

QCoulomb2=OmSToOmS2[CoulombBranchFormula[Mat2,Cvec2,Nvec2]];

QCoulomb1s=Simplify[MutateLeftOmS2[Mat2,2,DropOmSNeg[MutateRightOmS[Mat,2,QCoulomb1/.repOmS]]]]

QCoulomb2s=Simplify[MutateRightOmS[Mat,2,DropOmSNeg[MutateLeftOmS2[Mat2,2,QCoulomb2]]/.repOmS]]

Simplify[DropOmSNeg[MutateLeftOmS2[Mat2,2,QCoulomb2s]]-QCoulomb1s/.repOmS]