I suppose it's because Head[Pi]
is Symbol
, and Pi
is numeric but not a number.
For instance, it seems Pi
is replaced by an internal variable, the system reduced, and then the internal variable is replaced by Pi
. The cylindrical decomposition seems to apply something like the trichotomy law and consider the three cases x < ...
, x == ...
, and x > ...
separately. Actual numbers are handled more simply, or Reduce looks to see if cases can be combined for numbers and not for symbols. I'm just guessing here. I don't think these details are published.
Pursuing this line may be futile.
Here's a somewhat bizarre workaround, replacing Pi
by a nonnumeric symbol:
Reduce[a == Pi &&
((x == -\[Pi] && y == \[Pi]) || (-\[Pi] < x <= 0 && y == -x) ||
(0 < x < \[Pi] && y == x) /. Pi -> a),
{a, x, y}, Reals] /. a -> Pi
(* (-\[Pi] <= x <= 0 && y == -x) || (0 < x < \[Pi] && y == x) *)
On the other hand, it handles equivalence without tricks:
Reduce[
Equivalent[
(x == -\[Pi] && y == \[Pi]) || (-\[Pi] < x <= 0 && y == -x) ||
(0 < x < \[Pi] && y == x),
(-\[Pi] <= x <= 0 && y == -x) || (0 < x < \[Pi] && y == x)]
, {x, y}, Reals]
(* True *)