Re: components() is still buggy



On Tuesday 18 May 2004 19:37, you wrote:
| 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?
The commercial macsyma does  this. There is another issue shown here
I mean that
if I define components(f([i],[]),m([j],[])*l([],[j])*p([i],[]))
I can not use f([j],[]) as it will give a wrong answer

Valery 

|
| Viktor

| 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