There is no reduction in *Mathematica* because even though the argument is *semantically* equivalent to it is not *syntactically* equivalent. Furthermore, unlike the previous example, we cannot use `AlgebraicRules`

to rectify this behavior. In a truly semantic pattern matching language, we might want the above expression to reduce to . However, in standard *Mathematica* this is difficult. To solve this problem, we have to generalize the pattern matching capabilities of *Mathematica* to include full semantic pattern matching.