Exactly. This is the answer I wanted. However this bring me to my second question. When I apply the rules you suggested in the following code:
With[{b = {{b1}, {b2}}, a = {{a1}, {a2}},
S1 = {{s11, s12}, {s12, s22}}},
Rule1 = Conjugate[x_ + y_] :> Conjugate[x] + Conjugate[y];
Rule2 = Conjugate[x_ y_] :> Conjugate[x] Conjugate[y];
MyRules = {Rule1, Rule2};
ConjugateTranspose[S1.a]. (S1.a) == ConjugateTranspose[a].a //.
MyRules // Expand // PowerExpand // TraditionalForm]
I get the following result:
({
{a1 s11 Conjugate[a1] Conjugate[s11] +
a2 s12 Conjugate[a1] Conjugate[s11] +
a1 s12 Conjugate[a1] Conjugate[s12] +
a2 s22 Conjugate[a1] Conjugate[s12] +
a1 s11 Conjugate[a2] Conjugate[s12] +
a2 s12 Conjugate[a2] Conjugate[s12] +
a1 s12 Conjugate[a2] Conjugate[s22] +
a2 s22 Conjugate[a2] Conjugate[s22]}
}) == ({
{a1 Conjugate[a1] + a2 Conjugate[a2]}
})
When I add the //FullSimpify to the original code, terms like (a1 s11 Conjugate[a1] Conjugate[s11]) are not converted automatically to (Abs[a1]^2+ Abs[s11]^2). So my question is, do I have to add another rule to make Mathematica take care of the mentioned conversion?
Thanks