Do not import this package directly. inv.m memoise many values automatically and is imported or cleared by group.m.
- Symmetry
- Clebsch-Gordan Coefficients
- Symmetries of CG Coefficients
- Conformal Blocks
- OPE Coefficients
- Bootstrap Equations
- Conversions of Bootstrap Equations
symmetryGroup represents the global symmetry of CFT.
clearCG[] clears all values calculated by this package.
An irrep-object r is a symbol such that symmetryGroup[isrep[r]] is True.
We use r,s,t,r1,r2,... to denote irrep-objects, and id is the irrep-object of the trivial irrep.
a,b,c,a1,a2,... are indices of irreps. An index a of irrep r must sutisfy 1 <= a <= symmetryGroup[dim[r]].
n,m represents multiplicity of Clebsch-Gordan coefficients.
For more information, please refer to arXiv:1903.10522.
inv[r,s,t] gives multiplicity of id in decomposition of r \[TensorProduct] s \[TensorProduct] t.
inv[{r,s},{t}] gives multiplicity of t in decomposition of r \[TensorProduct] s.
inv[r1,r2,r3,r4] gives an association
whose key is a irrep s such that inv[{r1,r2},{s}]>0 and inv[r3,r4,s]>0,
whose value is a list {inv[{r1,r2},{s}], inv[r3,r4,s]}.
invs[r1,r2,r3,r4] gives a list of {s,n,m} such that cor[r1,r2,r3,r4][s,n,m] is defined.
ope[r,s,t][n][a,b,c] gives Clebsch-Gordan coefficient defined by
|r,a\[RightAngleBracket] \[TensorProduct] |s,b\[RightAngleBracket] = \[Sum] ope[r,s,t][n][a,b,c] |t,c,n\[RightAngleBracket].
ope[r][a,b] gives Sqrt[dim[r]] ope[r,dual[r],id][1][a,b,1].
cor[r,s,t][n][a,b,c] gives \[Sum] ope[r,s,dual[t]][n][a,b,c2] ope[dual[t]][c2,c] / Sqrt[dim[t]].
cor[r1,r2,r3,r4][s,n,m][a1,a2,a3,a4] gives\[Sum] cor[r1,r2,dual[s]][n][a1,a2,b] ope[r3,r4,dual[s]][a3,a4,b].
\[Sigma][r,s,t][n] gives the sign change in swap between r and s in cor,
i.e. cor[r,s,t][n][a,b,c] = \[Sigma][r,s,t][n] cor[s,r,t][n][b,a,c].
\[Sigma][r] gives \[Sigma][r,dual[r],id].
\[Sigma][op[x,r,p,q]] gives p.
\[Tau][r,s,t][n,m] describes the behavior of cor under cyclic permutation of r,s,t,
i.e. cor[s,t,r][m][b,c,a] = \[Sum] cor[r,s,t][n][a,b,c] \[Tau][r,s,t][n,m].
\[Omega][r,s,t][n,m] describes the behavior of cor under complex conjugate,
i.e. \[Sum] ope[dual[r]][a2,a] ope[dual[s]][b2,b] ope[dual[t]][c2,c] cor[dual[r],dual[s],dual[t]][m][a2,b2,c2]\[Conjugate] = \[Sum] cor[r,s,t][n][a,b,c] \[Omega][r,s,t][n,m].
six[r1,r2,r3,r4][s,n,m,t,k,l] describes the behavior of cor under swap between r2 and r4,
i.e. cor[r1,r4,r3,r2][t,k,l][a1,a4,a3,a2] = \[Sum] cor[r1,r2,r3,r4][s,n,m][a1,a2,a3,a4] six[r1,r2,r3,r4][s,n,m,t,k,l].
isReal[r] gives whether r is a real representation or not.
isComplex[r] gives whether r is a complex representation or not.
isPseaudo[r] gives whether r is a pseaudo real representation or not.
op[x,r,p,q] represents a primary operator object O whose name is x, which belongs to irrep r,
which sign (=\[Sigma][O]) is p and whose parity of spin is q (=±1).
If O appears in summation, we use 'op' as its name.
op[x,r] is a short-hand for op[x,r,1,1].
op[x] is a short-hand for op[x,r,1,1] if you registered op[x,r,1,1] as a fundamental scalar.
dualOp[op[x,r,p,q]] gives dual operator object of op[x,r,p,q].
format[eq] gives readable format of eq with little loss of information.
We need much redundancy to calculate properly, so formatted value cannot be used for any argument of our function.
format[eq] is assumed to be used only for human-readability of last output.
sum[x,op[op,r,1,q]] represents sum of x over all intermediate primary operator O=op[op,r,1,q]
which belongs to irrep r and whose parity of spin is q.
sum[...] is automatically expanded so as x to be (F or H)*\[Beta]^2.
single[x] represents x. We need to wrap x for redundancy.
single[...] is automatically expanded so as x to be (Fp or Hp)*\[Beta]^2, or (Fp or Hp).
F[o1,o2,o3,o4,s,p] represents generalized conformal block F_{p,s}^{1,2,3,4}, where o1,...,o4 are primary scalars.
F[a,b,c,d] represents normal conformal block of type-F.
H[a,b,c,d] represents normal conformal block of type-H.
Fp[o1,o2,o3,o4,o] represents generalized conformal block F_{o}^{1,2,3,4}, where o1,...,o4 and intermediate o are primary scalars.
Fp[a,b,c,d,o] represents normal conformal block of type-F with intermediate o.
Hp[a,b,c,d,o] represents normal conformal block of type-H with intermediate o.
\[Lambda][o1,o2,o3][n] gives n-th OPE coefficient of o1\[Times]o2 \[Rule] OverBar[o3].
\[Alpha][o1,o2,o3][n] gives n-th coefficient of three-point function \[LeftAngleBracket]o1 o2 o3\[RightAngleBracket].
\[Mu][o1,o2,o3][n] gives n-th OPE coefficient of o1\[Times]o2 \[Rule] OverBar[o3], where o3 is registered as a fundamental scalar.
\[Nu][o1,o2,o3][n] gives n-th coefficient of three-point function \[LeftAngleBracket]o1 o2 o3\[RightAngleBracket],
where o3 is registered as a fundamental scalar."
\[Beta][o1,o2,o3][n] gives minimal basis to describe \[Lambda], \[Alpha], etc.
\[Lambda], \[Alpha], \[Mu] and \[Nu] are linear combination of \[Beta].
eqn[{a,b,...}] represents bootstrap equation that claims a,b,... must equals to 0,
where a,b,... are real-linear combination of sum and single.
eqn[sec,{a,b,...}] represents extracted part of eqn[{...}] which contains only sum or single related to sec.
bootAll[ops] generates bootstrap equation from all four-point functions of ops.
bootAll[] generates bootstrap equation from all four-point functions of fundamental scalars.
setOps[ops] registers ops and duals of ops as fundamental scalars.
Fundamental scalars are used to seperate sum of conformal blocks over scalars to single[...] and sum[...].
one represents the unit operator. This is implicitly registered as a fundamental scalar.
extract[x,op[op,r,1,p]] extracts terms of the form sum[...,op[op,r,1,p]] from x.
extract[x,scalar] extracts terms of the form single[(Fp or Hp)*\[Beta]^2] from x.
extract[x,unit] extracts terms of the form single[Fp or Hp] from x (contribution of the unit operator).
extract is a projection:
x == extract[x,unit] + extract[x,scalar] + \[Sum]_{r,p} extract[x,op[op,r,1,p]] and extract[x,sec] == extract[extract[x,sec]].
unit is a option for extract and means contribution of unit operator.
scalar is a option for extract and means contribution of fundamental scalars but unit operator.
sector[eq] gives a list of all nontrivial option sec for extract applied to eq, i.e. {sec | extract[eq,sec] != 0}.
makeG[eqn[sec,{a,b,...}]] gives an undirected graph
whose vertices are OPE coefficients \[Beta] in extracted bootstrap equation eqn[sec,{a,b,...}].
makeMat[eqn[sec,{a,b,...}]] gives a matrix-representation of extracted bootstrap equation eqn[sec,{a,b,...}].
makeSDP[eqn[{a,b,...}]] converts whole bootstrap equation eqn[{a,b,...}] into sdp-object.
sdpobj[secs,scalarnum,vals,mats] is a sdp-object.
secs is section data of bootstrap equation.
scalarnum is the number of connected components in scalar sections.
vals are real constants in bootstrap equation.
mats are matrix-representation of bootstrap equation.
toQboot[sdp] converts sdp-object into c++ code for qboot.
toCboot[sdp] converts sdp-object into python code for cboot.
toTeX[eq] gives LaTeX string of eq (you need call Print[toTeX[eq]] to paste to your tex file).
toTeX[eqn[{a,b,...}]] gives LaTeX string of eq with align environment (you need call Print[toTeX[eq]] to paste to your tex file).
repToTeX[r] is needed to transrate irrep-object r as LaTeX string. Please set appropriate value.
opToTeX[o] is needed to transrate operator name o as LaTeX string. Please set appropriate value.