ABSTRACT (original article): We consider the problem of finding the set of classical polylogarithmic functions
Li
n
with branching locus determined by the solution of
p
1
·
p
2
·…·
p
n
=0
, where
p
1
,…,
p
n
are irreducible polynomials of several variables. We present an algorithm of constructing a complete set of possible arguments of
Li
n
functions. The corresponding Mathematica code is included as ancillary file. Using this algorithm and the symbol map, we provide some examples of polylogarithmic identities. CITATION (original article): Roman N. Lee (2024), Polylogarithmic functions with prescribed branching locus and linear relations between them, arXiv:2407.12503. https://doi.org/10.48550/arXiv.2407.12503

Preamble

In[]:=
SetDirectory[NotebookDirectory[]];
Simple package for using symbol map:
In[]:=
<<"SymbolMap.wl"
Package introduced in https://arxiv.org/abs/2407.12503
In[]:=
<<"Arguments.wl"
Function
L
n
(z)
defined in Eq (3.1) of arXiv:2407.12503
In[]:=
L[n_,z_]:=PolyLog[n,z]+Sum
r
(-1)
r!
r
Log[
2
z
]
2
PolyLog[n-r,z],{r,n-2}+
n
(-1)
(n-1)
n!
n-1
Log[
2
z
]
2
Log[1-z]

Symbol map

Symbol map allows one to search and check identities. For example
In[]:=
expr=PolyLog[2,x]+PolyLog[2,1-x]+Log[1-x]Log[x];
expr can be expressed via simpler functions:
In[]:=
FunctionExpand[expr]
Out[]=
2
π
6
Respectively, the symbol map gives zero:
In[]:=
SymbolExpand@SymbolMap[expr]
Out[]=
0

Searching for identities

Example 1

Let us start with the polylogs which have branching points at
x=0
and
x=1
.
Therefore, we define
In[]:=
polys={x,1-x};​​vars={x};
Possible arguments of
Li
n
:
In[]:=
args=Flatten@PolyLogArguments[polys,vars]
Out[]=
x,1-x,
1
x
,
-1+x
x
,
1
1-x
,-
x
1-x


Weight-2


Weight 3


Weight 4

Let us express Nielsen’s polylogarithm
S
2,2
via
Li
n
In[]:=
functions=Flatten[{PolyLog[2,2,x],LL[4,1-1/x],LL[4,1-x],LL[4,x],LL[3,1-x]*Log@polys,LL[3,x]*Log@polys,LL[2,x]*DeleteDuplicates[Times@@@Tuples[Log@polys,2]]​​,DeleteDuplicates[Times@@@Tuples[Log@polys,4]]}]
Out[]=
PolyLog[2,2,x],LL4,1-
1
x
,LL[4,1-x],LL[4,x],LL[3,1-x]Log[x],LL[3,1-x]Log[1-x],LL[3,x]Log[x],LL[3,x]Log[1-x],LL[2,x]
2
Log[x]
,LL[2,x]Log[1-x]Log[x],LL[2,x]
2
Log[1-x]
,
4
Log[x]
,Log[1-x]
3
Log[x]
,
2
Log[1-x]
2
Log[x]
,
3
Log[1-x]
Log[x],
4
Log[1-x]

Now we generate symbol for each function:
In[]:=
symbols=SymbolExpand@*SymbolMap/@(functions/.LL->L);
Each symbol is a linear combination of the following elementary symbols (basis symbols):
In[]:=
basis=Union[Cases[symbols,_dLog,All]]
Out[]=
{dLog[-1+x,-1+x,-1+x,-1+x],dLog[-1+x,-1+x,-1+x,x],dLog[-1+x,-1+x,x,-1+x],dLog[-1+x,-1+x,x,x],dLog[-1+x,x,-1+x,-1+x],dLog[-1+x,x,-1+x,x],dLog[-1+x,x,x,-1+x],dLog[-1+x,x,x,x],dLog[x,-1+x,-1+x,-1+x],dLog[x,-1+x,-1+x,x],dLog[x,-1+x,x,-1+x],dLog[x,-1+x,x,x],dLog[x,x,-1+x,-1+x],dLog[x,x,-1+x,x],dLog[x,x,x,-1+x],dLog[x,x,x,x]}
Now we render symbols to column vectors of coefficients and find their zero combinations:
In[]:=
coefs=RowReduce@NullSpace[Transpose@Outer[Coefficient,symbols,basis]];
Indeed:
In[]:=
Factor[coefs.symbols]
Out[]=
{0}
Respectively, the corresponding combinations of functions are expressed via simpler functions
In[]:=
lhs=coefs[[1]].functions
Out[]=
LL4,1-
1
x
+LL[4,1-x]-LL[4,x]+LL[3,1-x]Log[x]-
1
24
2
Log[1-x]
2
Log[x]
+PolyLog[2,2,x]
By expanding this expression at x=0, we can recover the rhs:
In[]:=
Series[lhs/.LL->L,{x,0,3},Assumptions->x>0]​​rhs=Normal[%]
Out[]=
1
120
-
4
π
+120Log[x]Zeta[3]+
4
O[x]
Out[]=
1
120
-
4
π
+120Log[x]Zeta[3]
In[]:=
Chop[lhs-rhs/.LL->Re@*L/.x->RandomReal[WorkingPrecision->200]]
Out[]=
0
In[]:=
Expand[Solve[lhs==rhs/.PolyLog[2,2,x]->f,f]/.f->PolyLog[2,2,x]]
Out[]=
PolyLog[2,2,x]-
4
π
120
-LL4,1-
1
x
-LL[4,1-x]+LL[4,x]-LL[3,1-x]Log[x]+
1
24
2
Log[1-x]
2
Log[x]
+Log[x]Zeta[3]

CITE THIS NOTEBOOK

Polylogarithmic functions with prescribed branching locus and linear relations between them​
by Roman N. Lee​
Wolfram Community, STAFF PICKS, June 5, 2025
​https://community.wolfram.com/groups/-/m/t/3474687