[Date Index] [Thread Index] [Author Index]
Re: Positive[a] = True ???
If the symbol a is positive then why cannot Mathematica simplify Sqrt[a^2] to a? In:= Positive[a]^=True; In:= Simplify[Sqrt[a^2]] 2 Out= Sqrt[a ] /Johan In article <48ejb3$fi5 at ralph.vnet.net> Allan Hayes <hay at haystack.demon.co.uk> writes: > Frank Domokos <domokos at chaph.usc.edu> > in [mg2518] Positive[a] = True ??? > asks about the following kind of response > > IN>> Positive[a] = True; > OUT>> Set::write: Tag Positive in Positive[a] is Protected. > > Frank, > > Most system functions, like Positive, are protected (have the > attribute Protected) to avoid unintentional changes. You cannot make > a definition for them ("tagged" by them) without unprotecting them > (see later). > > Here are some ways round this for your example > > 1.Tag your definition with a instead of f: > > a. by using UpSet (^=) instead of Set (=): > > Positive[a]^= True; > > or, more specifically, > > b. by using TagSet: > > a/:Positive[a] = True; > > Or > > 2. Unprotect Positive to allow definitions to be tagged by it: > > Unprotect[Positive]; > > Positive[a] = True; > > (eventually re-protecting Positive) > > > Of course if a is protected or is an expression with a protected > head then you will need to unprotect either Positive or a or the > head of a. > > Allan Hayes > hay at haystack.demon.co.uk -- _____________________________________________________ Johan Gunnarsson | Division of Automatic Control /|\ Dept. of EE, Linkoping University \|/ S-581 83 Linkoping, Sweden /|\ Tel: +46 13 282913 / | \ Fax: +46 13 282622 () | () Email: johan at isy.liu.se