I have a long expression which is not fully simplified because Abs[Sin[4a]] is considered different from 2Sin[2a]Abs[Cos[2a]] for a∈[0,π/2]a \in [0,\pi/2] – which is actually not.

As a proof of that, if I run

Assuming[0 <= a <= Ï€/2, Abs[Sin[4 a]] == 2 Abs[Cos[2 a]] Sin[2 a] // Simplify]
I do not get True, but Abs[Sin[4 a]] == 2 Abs[Cos[2 a]] Sin[2 a]. Of course, if I run
Assuming[0 <= a <= Ï€/2, Abs[Sin[4 a]] == 2 Abs[Cos[2 a] Sin[2 a]] // Simplify]
I get True. Anyone has an idea why it is not correctly simplified? Anyone with the same issue?
I am using Mathematica 10.0 on a Windows 7 Home Premium machine.
=================
=================
2 Answers
2
=================
As I was recently informed by Wolfram support, Simplify is not guaranteed to fully solve equalities or inequalities. Take this example:
FullSimplify[Log[x] > 1, Element[x, Reals]] (* Log[x] > 1 *)

Reduce[Log[x] > 1, x, Reals] (* x > E *)

We can also get your equation to simplify by using Reduce.

Reduce[Abs[Sin[4 a]] == 2 Abs[Cos[2 a]] Sin[2 a] && 0 <= a <= Pi/2]
(* 0 <= a <= Pi/2 *)
As you can see, the equality has been simplified to True.
Thank you for pointing out the use of Reduce. However, I feel like using it for simplifications is in general more cumbersome, especially if you are working with expressions involving multiple variables/parameters and temporary assumptions.
– Nicola
Mar 11 '15 at 0:02
@Nicola In fact it's even worse, since Reduce won't take arbitrary expressions, only systems of equalities and inequalities.
– 2012rcampion
Mar 11 '15 at 0:04
You can add ComplexExpand to the transformations FullSimplify will try (since a is real). But FullSimplify seeks to minimize the complexity of the expression, and the starting expression is a local minimum, To get it over the hump, we can penalize Abs.
Assuming[0 <= a <= Ï€/2,
FullSimplify[Abs[Sin[4 a]] == 2 Abs[Cos[2 a]] Sin[2 a],
TransformationFunctions -> {Automatic, ComplexExpand},

ComplexityFunction -> (LeafCount[#] + 10 Count[#, _Abs, Infinity] &)]]

(* True *)

Perhaps the best way is to combine 2012campion’s method with this:

Assuming[0 <= a <= Ï€/2,
Simplify[Abs[Sin[4 a]] == 2 Abs[Cos[2 a]] Sin[2 a],
TransformationFunctions -> {Automatic, # /. eq_Equal :> Simplify@Reduce[eq && $Assumptions] &}]]

(* True *)