Re: ReplaceAll
- To: mathgroup at smc.vnet.net
- Subject: [mg90426] Re: ReplaceAll
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Wed, 9 Jul 2008 04:52:47 -0400 (EDT)
- Organization: The Open University, Milton Keynes, UK
- References: <g4v2u3$idv$1@smc.vnet.net>
Bruce Colletti wrote: > Re Mathematica 6.0.2 under WinXP. > > Why doesn't the following substitute x for b'**b (appears in the third, fourth, sixth and seventh summands)? (a**b')**b/.b'**b->x does. Note that (-a ** b') ** b /. b' ** b -> x (-a ** b') ** b does not work either. A quick glance at the TreeForm (or FullForm) of the expressions will reveal why. TreeForm[(a ** b') ** b] TreeForm[(-a ** b') ** b] The following pattern handles correctly the negative case: (-a ** b') ** b /. ((f_) a ** b') ** b -> f a ** x -a ** x > In[1]:= M=b**a'-a**b'; > Distribute[M**M**M,Plus]/.b'**b->x > > Out[2]= (-a**b^\[Prime])**(-a**b^\[Prime])**(-a**b^\[Prime])+b**a^\[Prime]**(-a**b^\[Prime])**(-a**b^\[Prime])+(-a**b^\[Prime])**b**a^\[Prime]**(-a**b^\[Prime])+(-a**b^\[Prime])**(-a**b^\[Prime])**b**a^\[Prime]+b**a^\[Prime]**b**a^\[Prime]**(-a**b^\[Prime])+b**a^\[Prime]**(-a**b^\[Prime])**b**a^\[Prime]+(-a**b^\[Prime])**b**a^\[Prime]**b**a^\[Prime]+b**a^\[Prime]**b**a^\[Prime]**b**a^\[Prime] > In[31]:= M = b ** a' - a ** b'; Distribute[M ** M ** M, Plus] /. ((f_) a ** b') ** b -> f a ** x Out[32]= (-a ** x) ** a' ** (-a ** b') + (-a ** b') ** (-a ** x) ** a' + (-a ** b') ** (-a ** b') ** (-a ** b') + b ** a' ** (-a ** x) ** a' + b ** a' ** (-a ** b') ** (-a ** b') + (-a ** x) ** a' ** b ** a' + b ** a' ** b ** a' ** (-a ** b') + b ** a' ** b ** a' ** b ** a' Regards, -- Jean-Marc