<<PolylogTools`

i71[x_,y_] := II[x, 0,0, 0, 0, 0, 0, y];

i71p[x_,y_] := (i71[x,y] + i71[x,1/y])/2;
i71m3[x_,y_] := i71p[x,y] + i71p[x,1/(1-y)] + i71p[x, 1-1/y];

L8[x_] := -II[1/x,0, 0, 0, 0, 0, 0, 0];

G[0, 0, 0, 1, 1, x]//CreateTensor

II[1/x, 1/x, 0, 0, 0]//makeShortTensor//ReduceTensorProduct

N8[x_] := II[1/x, 1/x, 0,0, 0, 0, 0, 0];

L8fac[arg_] := Module[{f}, (
f = Factor[{arg, 1/arg}];
If[Sort[f][[1]] === f[[1]], Return[L8i[f[[1]]]], Return[-L8i[f[[2]]]]];
)];
L8can[expr_] := expr/.L8i->L8fac

SetAttributes[L8sym,HoldAll];
Options[L8sym]={oneMinusOneOverY->False,oneMinusOneOverX->False};
L8sym[coeff_,arg_,opts:OptionsPattern[]]:=Module[{oneMinusOneOverYTF,oneMinusOneOverXTF,coeffs,args},(
oneMinusOneOverYTF=OptionValue[oneMinusOneOverY]==True;
oneMinusOneOverXTF=OptionValue[oneMinusOneOverX]==True;

coeffs={Hold[coeff]};
args={Hold[arg]};

If[oneMinusOneOverXTF,
coeffs=Join[coeffs,coeffs, coeffs];
args=Join[args,args/.{x->1-1/x},args/.{x->1/(1-x)}];];
If[oneMinusOneOverYTF,coeffs=Join[coeffs,coeffs,coeffs];
args=Join[args,args/.{y->1-1/y},args/.{y->1/(1-y)}];];

Return[Plus@@Release[MapThread[#1 L8i[#2]&,{coeffs,args}]]];
)];

i71terms = i71m3[x,y] + i71m3[1/(1-x), y] + i71m3[1-1/x, y];

li8termsFull = -N8[1-(1/x)]-N8[(1/(1-x))]-N8[x]+N8[1-(1/y)]+N8[(1/(1-y))]+N8[y]-(9/2) L8i[1-x]-(9/2) L8i[(1/x)]+(9/2) L8i[((-1+x)/x)]+3L8i[1-y]+(7/4) L8i[(1/((-1+x) (-1+y)))]-(7/4) L8i[((-1+x)/(-1+y))]-(7/4) L8i[-(1/(x (-1+y)))]+(7/4) L8i[-((-1+x)/(x (-1+y)))]+(7/4) L8i[-(x/(-1+y))]-(7/4) L8i[-(x/((-1+x) (-1+y)))]+(1/36) L8i[-((-1+y)/((-1+x) x (y^2)))]+(1/36) L8i[-(((((-1+x))^2) (-1+y))/(x (y^2)))]+(1/36) L8i[(((x^2) (-1+y))/((-1+x) (y^2)))]+3 L8i[(1/y)]+(7/4) L8i[-(1/((-1+x) y))]-(7/4) L8i[-((-1+x)/y)]-(7/4) L8i[(1/(x y))]+(7/4) L8i[((-1+x)/(x y))]+(7/4) L8i[(x/y)]-(7/4) L8i[(x/((-1+x) y))]-(1/36) L8i[-((-1+x)/((x^2) (-1+y) y))]-(1/36) L8i[(x/((((-1+x))^2) (-1+y) y))]-(1/36) L8i[(((-1+x) x)/((-1+y) y))]-3 L8i[((-1+y)/y)]+(7/4) L8i[-((-1+y)/((-1+x) y))]-(7/4) L8i[-(((-1+x) (-1+y))/y)]-(7/4) L8i[((-1+y)/(x y))]+(7/4) L8i[(((-1+x) (-1+y))/(x y))]+(7/4) L8i[((x (-1+y))/y)]-(7/4) L8i[((x (-1+y))/((-1+x) y))]-(1/36) L8i[-(((-1+x) (((-1+y))^2))/((x^2) y))]-(1/36) L8i[((x (((-1+y))^2))/((((-1+x))^2) y))]-(1/36) L8i[(((-1+x) x (((-1+y))^2))/y)];

li8termsShort = -N8[1-(1/x)]-N8[(1/(1-x))]-N8[x]+N8[1-(1/y)]+N8[(1/(1-y))]+N8[y]+ L8sym[-(1/36),(((-1+x) x)/((-1+y) y)),{oneMinusOneOverX->True,oneMinusOneOverY->True}]+
L8sym[(7/4),(x/y),{oneMinusOneOverX->True,oneMinusOneOverY->True}]+
L8sym[(7/4),x y,{oneMinusOneOverX->True,oneMinusOneOverY->True}]+
L8sym[(3/2),x,{oneMinusOneOverX->True,oneMinusOneOverY->True}]+
L8sym[-1,y,{oneMinusOneOverX->True,oneMinusOneOverY->True}];

li8termsFull - li8termsShort//L8can//Expand

result = i71terms - li8termsFull/.{L8i->L8,i71i->i71};

tensor=result//makeShortTensor//sh;
tensor//ReduceTensorProduct//flatTensor//Expand

NotebookSave[];