Problem with Times. Bug ????
- To: mathgroup at yoda.physics.unc.edu
- Subject: Problem with Times. Bug ????
- From: barenco at eldp.epfl.ch (ADRI)
- Date: Thu, 3 Jun 1993 17:10:53 +0200
Hello, I am trying to implement a fast non-commutative operation under Mma to work with non-commutative algebras (see a previous post). Among the things I tried, one was to redefine the Times operation in order to make it non- commutative on a certain class of objects, and to reimplement the commutativity for all other standard objects for which Times is usually commutative. I know that this is _highly_ discouraged by the authors of Mma. I tried various implementations, and got contradictory or inconsistent results, I tracked down the problem and found this : In[1]:= b a Out[1]= a b ! this is the standard order, Times is ! commutative In[2]:= Unprotect[Times]; In[3]:= ClearAttributes[Times,Orderless] ! This removes the commutativity of Times In[4]:= b a Out[4]= b a ! OK, it doesn't commute anymore In[5]:= a_*(b_+c_):=a*b + a*c; ! This introduces the left ditributivity ! of Times on Plus In[6]:= 2 (1 + b a) Out[6]= 2 + b a ! the result is as expected. In[7]:= 2 (1 - b a) Out[7]= 2 - 2 a b ! ???? the expression In[7] matches the pattern ! on the left handside of In[5], but in the ! replacement process Mma seems to have forgotten ! that Times is not commutative anymore !!! Is this a bug ? Is it due to a specific implementation of Times in the Kernel of Mma, so that Times does not tolerate modifications of its attributes ? Thanks for your answers, Adriano Barenco ============================================== Adriano Barenco Inst. for Micro- and Optoelectronics Dept. of Physics Swiss Fed. Inst. of Technology (EPFL) PHB-Ecublens CH-1015 Lausanne (Switzerland) email: barenco at eldpa.epfl.ch ==============================================