load(itensor);
imetric(g);
ishow(diff(t([],[i]),t([a],[])))$
gives as a noun
'diff(t^i,t[a],1)
The above is wrong answer.
A work around is to use the metric to lower the t([],[i]) contract then diff and after raise the index and contract as below:
ishow(contract(g([],[j,i])diff(contract(g([i,j],[])t([],[i])),t([a],[]))))$
it gives the correct answer of
g^(i a)
The variation using diff should check for this case.
If the new index method for contravariant tensor is used it gets the correct raise indices but is a kdelta and not g as below:
(%i12) ishow(diff(t([-i]),t([a],[])))$
(%t12) kdelta^(i a)
if the new index method is used for this case
(%i16) ishow(diff(t([],[i]),t([],[a])))$
(%t16) kdelta[a]^i correct answer
New index method does the diff below: gets the upper index as a -sign and ishow can't display it.
(%i15) ishow(diff(t([-i]),t([-a],[])))$
(%t15) kdelta^i (mtimes simp) -1 \$a)
the resolute above is
kdelta([-i],[-a])
The answer given is correct: itensor does not assume to know the relationship between t([],[a]) and t([i],[]). This is in line with the overall spirit of the itensor package: if we want the two to be connected by the metric, we can always tell itensor through components:
As to why, think, e.g., bimetric/multimetric theories where index raising and lowering is done for different fields by different tensors, for instance. So we should not presume to know how to raise/lower indices unless explicitly told. Declaring a metric using imetric(g) amounts to a defcon(g), but it does not automatically imply that tensors will be expanded in terms of g, e.g., for differentiation.
Thanks for the quick reply.
What about the last paragraph when using the minus index. Is diff completely compatible with that method?
I have also a long demo from the Macsyma program, it probably assumes the metric will work.
I was trying to do all of the demo lines in Maxima. I have come across some snags.
Where would it best to ask you help on them?
Regards,