Request for itensor's symtry.lisp



I suppose what I'm trying to do is rather different from what canform actually
does (so yes, I guess perhaps it wouldn't be that useful a feature to add in to
canform itself, since if the option was turned on then it wouldn't actually be
bringing things into canonical form!).  Basically I just want indices sorted
within individual tensors (I have special routines for renaming already), and it
struck me that this is half of what canform does.

I'm currently having a play around with the LISP code in canform, canten and
canprod (while having to teach myself a lot of the language at the same time!)
to create functions for my program to use - by basically just getting rid of the
calls to repeat1.  Can you think of any cases where the functions would produce
non-equivalent tensor expressions if repeat1 isn't called?  Unless there's a
better way to do this sorting quickly if it isn't tied in with renaming...?

         Josie


Quoting "Viktor T. Toth" <vttoth at vttoth.com>:

> 
> Dear Josie,
> 
> I fear that what you're asking for would be very difficult to implement (to
> say the least); for canform, the renaming of indices is an essential part of
> the simplification process, as this is how canform creates a "normalized"
> version of tensor (sub)expressions before elimination. Without renaming,
> canform would become essentially worthless.
> 
> By way of one particular example, suppose we have a sum of two
> subexpressions, one using i the other using j as dummy indices, for which we
> set properties. Suppose that canform recognizes that after
> renaming/rearranging, the two subexpressions are really the same, and can be
> combined into one. Which name should it then use for the dummy index, i or
> j? If it preserves both, it cannot do the simplification, since the two
> subexpressions remain different, defeating the basic idea behind bringing
> tensors to CANonical FORM for simplification.
> 
> 
> Viktor
> 
> 
> 
>