The procedure "ContractIndices" seems to produce wrong results. This is proved by the following source code, comparing the result of this procedure and a simple direct calculation:

with(DifferentialGeometry):with(Tensor):with(Tools):

DGsetup([x,y],P);

m:=nops(DGinfo("FrameBaseVectors"));

g:=evalDG(1/y^2*dx &t dx+1/y^2*dy &t dy);

CS:=Christoffel(g,"SecondKind");

R0:=CurvatureTensor(CS);

RFc:=ContractIndices(R0,g,[[1,1]]); # Maple Version 2015

# Out of the Help Page: ?Tensor[ContractIndices]

# Form the tensor product T ⊗ S and contract

# the 1st index of T against the 1st index of S.

# ContractIndices(T, S, [[1, 1]]);

# Only for comparison: g:=

# _DG([["tensor", P, [["cov_bas", "cov_bas"], []]], [[

# [1, 1], 1/y^2],

# [[2, 2], 1/y^2]]]);

# g in table form with all indices, including the zeros:

g1t:=

table([(1, 1) = 1/y^2, (2, 1) = 0, (1, 2) = 0, (2, 2) = 1/y^2]);

# Only fpr comparison:

# R0:=

# _DG([["tensor", P, [["con_bas", "cov_bas", "cov_bas", "cov_bas"],

# []]],

# [

# [[1, 2, 1, 2], -1/y^2],

# [[1, 2, 2, 1], 1/y^2],

# [[2, 1, 1, 2], 1/y^2],

# [[2, 1, 2, 1], -1/y^2]]

# ]);

# R0 in table form with all indices, including the zeros:

R01t:=

table([

(2, 1, 1, 2) = 1/y^2,

(2, 1, 1, 1) = 0,

(2, 2, 2, 1) = 0,

(2, 1, 2, 1) = -1/y^2,

(1, 1, 1, 2) = 0,

(1, 2, 2, 2) = 0,

(1, 2, 2, 1) = 1/y^2,

(2, 1, 2, 2) = 0,

(2, 2, 1, 2) = 0,

(2, 2, 2, 2) = 0,

(1, 1, 2, 1) = 0,

(1, 2, 1, 2) = -1/y^2,

(2, 2, 1, 1) = 0,

(1, 1, 2, 2) = 0,

(1, 1, 1, 1) = 0,

(1, 2, 1, 1) = 0

]);

# Only fpr comparison:

# RFc :=

# _DG([["tensor", P, [["cov_bas", "cov_bas", "cov_bas", "cov_bas"],

# []]],

# [

# [[1, 1, 2, 2], 1/y^4],

# [[1, 2, 1, 2], -1/y^4],

# [[2, 1, 2, 1], -1/y^4],

# [[2, 2, 1, 1], 1/y^4]]

# ]);

# RFc in table form with all indices, including the zeros:

RFc1t:=

table(

[(2, 1, 1, 2) = 0,

(2, 1, 1, 1) = 0,

(2, 2, 2, 1) = 0,

(2, 1, 2, 1) = -1/y^4,

(1, 1, 1, 2) = 0,

(1, 2, 2, 2) = 0,

(1, 2, 2, 1) = 0,

(2, 1, 2, 2) = 0,

(2, 2, 1, 2) = 0,

(2, 2, 2, 2) = 0,

(1, 1, 2, 1) = 0,

(1, 2, 1, 2) = -1/y^4,

(2, 2, 1, 1) = 1/y^4,

(1, 1, 2, 2) = 1/y^4,

(1, 1, 1, 1) = 0,

(1, 2, 1, 1) = 0

]);

TestContr:=proc()

description "Simple contraction";

local i,j,k,l;

global RR;

for i from 1 to m do

for j from 1 to m do

for k from 1 to m do

for l from 1 to m do

RR[i,j,k,l]:=add(R01t[r,j,k,l]*g1t[i,r],r=1..m)

od;

od;

od;

od;

print(`OK`)

end;

TestContr();

# Result of this:

# RR:=

# table(

# [(2, 1, 1, 2) = 1/y^4,

# (2, 1, 1, 1) = 0,

# (2, 2, 2, 1) = 0,

# (2, 1, 2, 1) = -1/y^4,

# (1, 1, 1, 2) = 0,

# (1, 2, 2, 2) = 0,

# (1, 2, 2, 1) = 1/y^4,

# (2, 1, 2, 2) = 0,

# (2, 2, 1, 2) = 0,

# (2, 2, 2, 2) = 0,

# (1, 1, 2, 1) = 0,

# (1, 2, 1, 2) = -1/y^4,

# (2, 2, 1, 1) = 0,

# (1, 1, 2, 2) = 0,

# (1, 1, 1, 1) = 0,

# (1, 2, 1, 1) = 0

# ]);

Testeq:=proc()

local i,j,k,l;

# global

for i from 1 to m do

for j from 1 to m do

for k from 1 to m do

for l from 1 to m do

if not (RFc1t[i,j,k,l] = RR[i,j,k,l]) then

print([i,j,k,l]) fi;

od;

od;

od;

od;

end;

Testeq();

# Result of this:

# [1, 1, 2, 2]

# [1, 2, 2, 1]

# [2, 1, 1, 2]

# [2, 2, 1, 1]

# No equality for these indices!