# Simplifying complex expresion (without ComplexExpand or User defined rules) [closed]

Many times, I've struggled with simplifying complex expressions, such as this extraordinarily simple expression, and Mathematica wont do it:

\$Assumptions = {l>0,a>0,a \[Element]Reals, l \[Element]Reals}
Conjugate[(Exp[I a])^(2 l)] //FullSimplify


Where Mathematica returns the same thing with no simplification. I told it the assumptions which make it very obvious to just change the sign of the exponent, and I don't understand why it doesn't work.

I looked here, but it seems like they have to define their own rules to do this kind of thing. I'm also saw here that you can do //ComplexExpand //FullSimplify for this expression, but it doesn't seem to work in all cases. Why should it be nessecary and why doesn't FullSimplify do it already? Also, I think ComplexExpand assumes that all variables are real, which was the case in this expression, but isn't always the case. So how would I do it then?

• what do you want Conjugate[(Exp[I a])^(2 l)] simplified to? (and it is really not good idea to use l for variable, it looks like 1. Better use n or m or something other letter. Commented May 24, 2020 at 4:58
• It is inconsistent to say that Mathematica won't simplify a complex expression while simultaneously not making use of one of its primary tools for simplifying complex expression, i.e., ComplexExpand. While ComplexExpand defaults to assuming that all variables are real, the optional second argument is used to specify which variables are complex. FullSimplify doesn't do everything because it would be inefficient to unnecessarily use additional tools in cases where they would have little value. Also, the "preferred" form is often a matter of opinion. Commented May 24, 2020 at 5:26
• We can't also use user defined rules? i.e. no replacement is allowed? This is too much restriction. it is like saying one has to add 2 numbers but not allowed to use the plus sign. Commented May 24, 2020 at 5:34
• "ComplexExpand assumes that all variables are real, which was the case in this expression, but isn't always the case" - indeed, so if you have things in your expression that aren't supposed to be real, that's what you use the second argument of ComplexExpand[] for. Commented May 24, 2020 at 5:55
• I’m voting to close this question because the OP seeks already existing functionality (namely, the second argument of ComplexExpand), but refuses to use it as implemented. Commented May 24, 2020 at 16:51

I am assuming they want Conjugate[Exp[I a]^(2 n)] to become (Exp[I a]^(-2 n) ?

By using a rule (De Moivre’s formula) (I do not see how it is possible otherwise)

ClearAll[a, n, r, m];
expr = Exp[I a]^(2 n);
e1 = ExpToTrig[expr] /. r_. (Cos[a_] + I Sin[a_])^(m_.) :> r^m (Cos[m a] + I Sin[m a]);
FullSimplify@Conjugate[e1]


Using ComplexExpand (just to compare with)

expr = Exp[I a]^(2 n);
FullSimplify@ComplexExpand@Conjugate@expr


If this is not is meant by the question, will delete this answer.