RE: components() is still buggy



Valery,

COMPONENTS did exactly what you told it to do. Spell it out:

(C7) (m([],[j])*l([j],[])*p([i],[]))*(m([],[j])*l([j],[])*p([j],[]));
              2           2
(D7) 		 m ([], [j]) p([i], []) l ([j], []) p([j], [])


What you are really asking COMPONENTS to do is to uniquely rename bound
indices every time a substitution is being made.

(C16)
RENAME(m([],[j])*l([j],[])*p([i],[]),1)*RENAME(m([],[j])*l([j],[])*p([j],[])
,2);
(D16) m([], [%1]) m([], [%2]) l([%1], []) l([%2], []) p([%2], []) p([i], [])


Do you think COMPONENTS should be responsible for this?


Viktor







-----Original Message-----
From: Valery Pipin [mailto:pip at iszf] 
Sent: Tuesday, May 18, 2004 6:22 AM
To: maxima@www.ma.utexas.edu
Cc: Viktor T. Toth
Subject: components() is still buggy 

The following example illustrates that components() should not be used
 if you have contractions inside the tensor definition
  (%i1) load(itensor);

(%o1)          /usr/share/maxima/5.9.1/share/tensor/itensor.lisp
(%i2) components(f([i],[]),m([],[j])*l([j],[])*p([i],[]));

(%o2)                                DONE
(%i3) f([i],[])*f([j],[]);

                       2                      2
(%o3)            m ([], [j]) p([i], []) l ([j], []) p([j], [])

which is obviously wrong

Valery