5 Reputation

6 years, 272 days

Is there a strong mistake in the Differ...

Maple 2015

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 &otimes; 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
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!

 Page 1 of 1
﻿