Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2007
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

Problem with Mathematica 6

  • To: mathgroup at smc.vnet.net
  • Subject: [mg77065] Problem with Mathematica 6
  • From: "Michael Weyrauch" <michael.weyrauch at gmx.de>
  • Date: Sat, 2 Jun 2007 04:19:35 -0400 (EDT)

Hello,

  the following code fragment runs under Mathematica 5.2 but
produces an infinite recursion error in Mathematica 6.0 in certain cases:

First I define a number of commands and slightly change the
built-in command "NonCommutativeMultiply":
Grading[_] = 0;
Fermion[a__] := ((Grading[#1] = 1) & ) /@ {a};
Fermion[a, b];
GetGradeds[a___] := GetGradeds[a] = Select[{a}, Grading[#1] != 0 & ];

Unprotect[NonCommutativeMultiply];
NonCommutativeMultiply[a___] /; (Length[GetGradeds[a]] <= 1) := Times[a];
Protect[NonCommutativeMultiply];

If you now e.g. evaluate

In[22]:= k ** l
Out[22]= k*l

or

In[23]:= a ** l
Out[23]= a*l

BUT in Mathematica 6.0:

In[24]:= a ** b

$IterationLimit::"itlim" : "Iteration limit of 4096 exceeded. \
\!\(\*ButtonBox["\[RightSkeleton]",
BaseStyle->"Link",
ButtonData:>"paclet:ref/message/$IterationLimit/itlim",
ButtonFrame->None,
ButtonNote->"$IterationLimit::itlim"]\)"
Out[24]= Hold[(Times[a]) ** b]

However in Mathematica 5.2 one gets

In[10]:= a ** b
Out[10]=a**b

which is what I expect and I want to have.

I.e., whenever I NonCommutativeMultiply two variables which are explicitly declared as fermions by the command Fermion[], I get an 
infinite recursion error in Mathematica 6.

This behaviour of Mathematica 6.0 is rather confusing to me, since I believe that I just use very basic and elementary assignments 
in my code. Why shouldn't it work  under Mathematica 6.0 if it works under 5.2? It appears that the 6.0 kernel behaves differently than the 
5.2 kernel in such basic situations. Very unpleasant!

(For anyone who wonders about the purpose of  this (strange) code: It is a small fragment of a package  that implements the handling 
of Grassmann variables. I just extracted that bit in order to show the Mathematica 6.0 problem.)

Furthermore, beyond an explanation of this unexpected behaviour of Mathematica 6, I would like to find a workaround in Mathematica 6 such that I get 
the same result as in Mathematica 5.2.

Thanks for any suggestions.

Michael Weyrauch





  • Prev by Date: Re: NestListEffects function not working in 6.0
  • Next by Date: Re: pure function to generate a list of integrals
  • Previous by thread: Re: Re: Gradient option for FindMinimum
  • Next by thread: Re: Problem with Mathematica 6