MathGroup Archive 2007

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

Search the Archive

Re: Why is NonCommutativeMultiply Protected?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg82726] Re: Why is NonCommutativeMultiply Protected?
  • From: David Bailey <dave at Remove_Thisdbailey.co.uk>
  • Date: Tue, 30 Oct 2007 03:21:28 -0500 (EST)
  • References: <fg1ivs$k16$1@smc.vnet.net>

Szabolcs Horvát wrote:
> Why is NonCommutativeMultiply Protected?
> 
> Is it safe to redefine NonCommutativeMultiply?  Does it have any special 
> built-in properties (apart from being Flat and OneIdentity)?  Is it used 
> by any of the built-in functions?
> 
> NonCommutativeMultiply certainly does not evaluate to anything, but the 
> same can be said about Rule[], which is not at all safe to redefine 
> because: 1. It has some special properties (it affects scoping, it does 
> not like Unevaluated[], etc.)  2. It is used together with functions 
> such as Replace, and (most probably) built-in functions use it internally.
> 
> So is it safe to Unprotect[NonCommutativeMultiply] and attach 
> definitions to it?  (I know that in certain situations one can use 
> UpValues, but I would like to know the answer to this question.)
> 
Yes, NonCommutativeMultiply is meant for user use, so go ahead and 
Unprotect it. It is, however, extremely ugly, and might get confused 
with the Fortran exponentiation operator! I prefer to use CircleTimes, 
or another built-in operator and give it the same attributes as 
NonCommutativeMultiply.

David Bailey
http://www.dbaileyconsultancy.co.uk


  • Prev by Date: Re: wrong answer or no answer?
  • Next by Date: Re: Creating and installing one's own packages?
  • Previous by thread: Re: Why is NonCommutativeMultiply Protected?
  • Next by thread: Re: Errant post?