Thanks Rohit, this is perfect. I was not aware that assumptions can use patterns.
BTW: The second parameter in Simplify is superfluous. Here some more examples how to use:
Block[{x, expr},
expr = Sqrt[(1 + 2 Conjugate[x] + x^2)];
Print[{expr, 1, Simplify[expr, Assumptions -> Element[_Symbol, Reals]]}];
Print[{expr, 2, Simplify[expr, Element[_Symbol, Reals]]}];
Print[{expr, 3, Assuming[Element[_Symbol, Reals], Simplify[expr]]}];
$Assumptions = Element[_Symbol, Reals];
Print[{expr, 4, Simplify[expr]}];
];
==>
{Sqrt[1+x^2+2 Conjugate[x]],1,Abs[1+x]}
{Sqrt[1+x^2+2 Conjugate[x]],2,Abs[1+x]}
{Sqrt[1+x^2+2 Conjugate[x]],3,Abs[1+x]}
{Sqrt[1+x^2+2 Conjugate[x]],4,Abs[1+x]}
Of course this works for many variables as well:
Block[{x, y, expr1, expr2},
$Assumptions = True;
expr1 = Sqrt[(1 + 2 Conjugate[x] + x^2)];
expr2 = Sqrt[x^2 + 2 x Conjugate[y] + y^2];
Print["Without assumptions: ", $Assumptions];
Print[{expr1, Simplify[expr1]}];
Print[{expr2, Simplify[expr2]}];
Assuming[Element[_Symbol, Reals],
Print["With assumptions: ", $Assumptions];
Print[{expr1, Simplify[expr1]}];
Print[{expr2, Simplify[expr2]}]
];
];
==>
Without assumptions: True
{Sqrt[1+x^2+2 Conjugate[x]],Sqrt[1+x^2+2 Conjugate[x]]}
{Sqrt[x^2+y^2+2 x Conjugate[y]],Sqrt[x^2+y^2+2 x Conjugate[y]]}
With assumptions: Element[_Symbol, Reals]
{Sqrt[1+x^2+2 Conjugate[x]],Abs[1+x]}
{Sqrt[x^2+y^2+2 x Conjugate[y]],Abs[x+y]}