Menu

#4578 Variation of rank 1 upper tensor by rank 1 lower tensor is not done

None
not-a-bug
5
2025-07-17
2025-07-17
No

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])

Discussion

  • Viktor Toth

    Viktor Toth - 2025-07-17
    • assigned_to: Viktor Toth
     
  • Viktor Toth

    Viktor Toth - 2025-07-17

    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:

    (%i1) load(itensor);
    
    (%o1)        /usr/share/maxima/5.47post/share/tensor/itensor.lisp
    (%i2) ishow(diff(t([],[i]),t([a],[])))$
    
                                        d    i
    (%t2)                              --- (t )
                                       dt
                                         a
    (%i3) components(t([],[i]),g([],[i,j])*t([j],[]));
    
    (%o3)                                done
    (%i4) ishow(contract(diff(t([],[i]),t([a],[]))))$
    
                                          i a
    (%t4)                                g
    

    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.

     
  • Viktor Toth

    Viktor Toth - 2025-07-17
    • status: open --> not-a-bug
     
  • Richard Gobeli

    Richard Gobeli - 2025-07-17

    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,

     

Log in to post a comment.