idiff display, was: pattern matching



Hey Robert,

your suggestions were very helpful indeed. I seem to have found a viable 
workaround to my problem with the commands

matchdeclare( [arg,t,i] ,all); 
tellsimp( 'idiff( 'diff( arg,t,1) ,i,1), diff( idiff( arg,i) ,t));

Thank you very much,
     Marcello

On Tue, 11 Mar 2008, Robert Dodier wrote:

> On 3/11/08, Marcello Musso <musso at physics.utexas.edu> wrote:
>
>>  defmatch(check,'idiff(arg,t));
>>  disprule(check);
>>  =>  check:idiff(arg,t)->[]
>
>>  check(idiff(diff(N([],[]),t),i));
>>  => false
>>
>>  even if idiff(diff(N([],[]),t),i) doesnt evaluate idiff.
>
> Looks like idiff (as with diff also) has a third argument which is
> the order of the derivative. When order = 1, it is suppressed.
> But it needs to be present in the pattern.
>
> load (itensor);
> matchdeclare ([arg, t], all);
> defmatch (check, 'idiff (arg, t, 1));
> depends (N, t);
> check (idiff (diff (N ([], []), t), i));
> => [t = i, arg = d/dt (N([], []))]
>
>>  I am doing this because i want maxima to display
>>
>>  idiff(diff(N([],[]),t),i)
>>
>>  as
>>
>>  (d/dt) N([],[],i)
>>
>>  so any other way to achieve this would help too.
>
> I don't know much about tensors. Maybe someone else can
> weigh in here. I suspect pattern matching is probably not the
> most effective method, but I don't know about anything else.
>
> best
>
> Robert Dodier
>

************************************************
*  Marcello Musso                              *
*  University of Texas at Austin               *
*  Department of Physics - Theory group        *
*  1, University Station C1608                 *
*  Austin, TX 78712-0269 - USA                 *
*  office phone: (512)-471-4108                *
*  VoIP phone: +39-02-303129852                *
************************************************