Re: More /.{I->-1} craziness

*To*: mathgroup at smc.vnet.net*Subject*: [mg106371] Re: More /.{I->-1} craziness*From*: Richard Fateman <fateman at cs.berkeley.edu>*Date*: Mon, 11 Jan 2010 05:27:41 -0500 (EST)*References*: <200912300915.EAA17299@smc.vnet.net> <hhhmn8$o9t$1@smc.vnet.net> <hic34o$5ah$1@smc.vnet.net>

Noqsi wrote: > > > It's more that I==-I makes no sense. That's not what anyone said. I -> -I means change the sign of all imaginary quantities. Rules do not necessarily represent value-preserving transformations. Sometimes people write epsilon^2 -> 0 By which they do NOT mean epsilon^2==0 and hence epsilon==0. What they mean is to discard powers of epsilon greater than one. This rule, by the way, also would not work, but epsilon^N_ ->0 with the condition N>1 might... A better way might be to compute a Series in epsilon. > >> Well, reporting something as a bug and hoping it will be fixed is >> another choice. > > But nobody with sense thinks it's a bug. I'm rubber you're glue. Everything you say sticks to you. > > Remember that nearly all of the expressions evaluated by Mathematica > are also generated by Mathematica, not by human users. Reading human > intent into such expressions would be a grave mistake. Fundamental > facilities like Replace have to perform predictably and regularly to > make it possible for the developers of Mathematica to avoid creating > bugs. You totally miss the point. If a human writes a rule I->-I, then the system can try to figure it out. Mathematica itself presumably would not automagically write such a rule, and so it would not be an issue. How to fix it for HumansOnly? Suggest to humans that they use BetterRules[I->-I] which would perhaps produce a different rule, e.g. Complex[a_,b_]->Complex[a,-b]. No big deal. > >> And writing a version of the facility that does the right thing is >> another choice. (Any takers?) > > You cannot even define with adequate rigor what you mean by the "right > thing". I think I can. I'm just being generous to people like you who might have suggestions about what you might like. How, *in general*, should Mathematica make *mathematical* > sense of a command to replace a constant with a different constant? Instead of protesting, I suggest you think about what someone might want, for even 60 seconds. As I pointed out above, rules are not used solely for value-preserving transformations, and so replacing 1 by 2 can make perfect sense. Note that Mathematica is perfectly happy to do f[1]/. 1->2. {by the way, f[1]/.1->2 results in the fairly nonsensical 10.f[1]->2, but that's a parsing problem.} > >> Either of these could be "productive". >> >> Are Mathematica design decisions sacred or something? > > The design of fundamental functionality like Replace is severely > constrained by the architecture of the system. Balsa wood is a useful > material, but you cannot use it to make the base structure of a > skyscraper. A more apt analogy may be that if a system is built with one size and shape of rectangular Lego bricks, you can make large stable rectangular structures, but it is impossible to construct (say) a smooth sloping ramp. Introducing another Lego shape can vastly expand the types of structures that can be easily built. People who insist on the perfection and purity of the original Lego brick can continue to use only those bricks, and their buildings will be just fine, as long as they need not comply with ADA. (They can't build wheelchair ramps for their disabled Lego-persons.) RJF > >