Re: Dot[]->1
- To: mathgroup at yoda.physics.unc.edu
- Subject: Re: Dot[]->1
- From: John Lee <lee at math.washington.edu>
- Date: Fri, 7 Aug 92 08:18:32 -0700
Michael Trott <trott at physik.th-ilmenau.de> writes:
> On simplifying some large expressions via some rules I ended with
> expressions of the following type:
> Dot[]+Dot[x,y] .
> In this expression I would like to replace the first part by 1. So I tried:
> (Dot[] + Dot[x,y])/.{Dot[]->1}.
> But the result was not what I expected (1+x.y), but rather
> 1 + 1.x.y .
> Can somebody tell me how to do my disired replacement and what happens
> in the described example?
> Actually I observed this behaviour first in expressions of the
> above type with Dot --> NonCommutativeMultiply.
The reason for this behavior is that Dot has the Flat attribute, which
means that Dot[x,y] is equivalent to Dot[Dot[],x,y] for pattern matching
purposes. The same goes for NonCommutativeMultiply.
Here is an alternative pattern that does what you want:
In[2]:= (Dot[] + Dot[x,y]) /. (x_Dot /; Length[x]==0) :> 1
Out[2]= 1 + x . y
Jack Lee
Dept. of Mathematics
University of Washington
Seattle, WA