Re: Unwanted Recursion

*To*: mathgroup at smc.vnet.net*Subject*: [mg120093] Re: Unwanted Recursion*From*: Kambis Veschgini <k.veschgini at thphys.uni-heidelberg.de>*Date*: Fri, 8 Jul 2011 04:52:28 -0400 (EDT)*References*: <iv1a95$sjl$1@smc.vnet.net> <iv46dn$fc9$1@smc.vnet.net>

On 2011-07-07 13:48:07 +0200, DrMajorBob said: > ClearAll@p > SetAttributes[p, {Flat, OneIdentity}] > p[a_] := a > p[a] > > a > > Bobby > > On Wed, 06 Jul 2011 04:39:33 -0500, Casorati <casorati at f-m.fm> wrote: > >> I'm trying to define an anti-commutative algebra in Mathematica. >> Here I will show only a minimal example to demonstrate my point. >> The product of two elements a^b should be give by p[a,b] so I >> make p flat: >> >> SetAttributes[p, {Flat}] >> >> But now I want p[a] to reduce to a. >> Such a rule would make other rules much simpler but when I define >> >> p[a_] := a >> >> the expression p[a] causes an infinite recursion. I get the message >> >> $IterationLimit::itlim: Iteration limit of 4096 exceeded. >> >> I have similar problems with p[]:=1 which makes mathematica puts >> ones into the p : p[a]=p[a,a]=p[1,1,...,a] . >> >> How can I solve this problem? SetAttributes[p, {Flat, OneIdentity}] p[a_] := a p[] := 1 p[a] $IterationLimit::itlim : "Iteration limit of 4096 exceeded. \