Reduction Problem

*To*: mathgroup <mathgroup at yoda.physics.unc.edu>*Subject*: Reduction Problem*From*: Roberto Sierra <73557.2101 at compuserve.com>*Date*: 30 Jun 93 15:16:46 EDT

I'm having trouble adding a couple of extensions to Plus and Sqrt to perform specific session-wide reductions in the eqns I am working with. I want these reductions to always occur, not just when I call Replace (/.) or ReplaceRepeated (//.). Here are the definitions: Unprotect[Sqrt,Plus]; Sqrt[x_^n_?EvenQ] := x^(n/2); (* True if x>=0 *) Plus[1, Cos[t_]] := 2 Cos[t/2]^2; (* True for all t *) Plus[x_, x_ Cos[t_]] := 2 x Cos[t/2]^2; Protect[Sqrt,Plus]; Here are some tests, which indicates that my defs work: In[6] := Sqrt[t^2] (* Don't worry about t<0 *) Out[6] := t In[7] := 1 + Cos[t] Out[7] := t 2 2 Cos[-] 2 In[8] := 2 + 2 Cos[t] Out[8] := t 2 4 Cos[-] 2 OK. Here's the problem. Using a 'real' expression, I don't get both rules working together. Why? In[9] := ds1 = Sqrt[ (1+Cos[theta])^2 + Sin[theta]^2 ] Out[9] := theta 4 2 Sqrt[4 Cos[-----] + Sin[theta] ] 2 In[10] := ds2 = ExpandAll[ds1,Trig->True] Out[10] := theta 2 2 Sqrt[Cos[-----] ] 2 If I type this expression back into MMA, I get the fully reduced equation: In[11] := 2 Sqrt[Cos[theta/2]^2] Out[11] := theta 2 Cos[-----] 2 What's going on?? Signed, Confused