Right, but if oracle used a simple to_upper or to_lower on the statement before it put it in the shared pool, then they would be equal.

A = to_upper(a)
a = to_lower(A)

etc