Re: Re: TransformationFunctions

• To: mathgroup at smc.vnet.net
• Subject: [mg101964] Re: [mg101922] Re: TransformationFunctions
• From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
• Date: Fri, 24 Jul 2009 06:14:22 -0400 (EDT)
• References: <h46p31\$e4g\$1@smc.vnet.net> <200907230754.DAA26659@smc.vnet.net>

```On 23 Jul 2009, at 16:54, Peter Breitfeld wrote:

> ". at ntaxa.com" wrote:
>
>> Can anyone advice why following code does not work:
>>
>> In[538]:=tf[z_NonCommutativeMultiply] := -z[[2]]**z[[1]]
>> In[539]:=Simplify[x ** y + y ** x,TransformationFunctions -> {tf,
>> Automatic}]
>> Out[539]:=x ** y + y ** x
>>
>> I expect rather 0
>>
>> By the way:
>> In[540]:=x ** y + tf[y ** x]
>> Out[540]:=0
>>
>
> I think, the problem here is, that Simplify will apply tf to both
> products. So I would suggest you do something like this:
>
> tfrule = (x_ ** y_ + y_ ** x_) :> 0;
> tf[expr_] := expr /. tfrule;
> Simplify[x ** y + y ** x, TransformationFunctions -> {tf}]
>
> Out=0
>
>
> --
> _________________________________________________________________
> Peter Breitfeld, Bad Saulgau, Germany -- http://www.pBreitfeld.de
>

There are problems with this approach.
Consider:

tfrule = (x_ ** y_ + y_ ** x_) :> 0;
tf[expr_] := expr /. tfrule;

Simplify[x ** y + y ** x, TransformationFunctions -> {tf}]
0

but

Simplify[2 x ** y + y ** x, TransformationFunctions -> {tf}]
2 x ** y + y ** x

by contrast:

tf1[expr_] :=
expr /. z_NonCommutativeMultiply :> If[Not[OrderedQ[z]], -Sort[z], z]

In[42]:= Simplify[x ** y + y ** x, TransformationFunctions ->
{Automatic, tf1}]
Out[42]= 0

but also

Simplify[2 x ** y + y ** x, TransformationFunctions -> {Automatic, tf1}]
x ** y

Andrzej Kozlowski

```

• Prev by Date: Re: Thoughts on a Wolfram|Alpha package for
• Next by Date: Re: Re: best way to save 3D plot as .eps for latex document?
• Previous by thread: Re: TransformationFunctions
• Next by thread: Re: Re: TransformationFunctions