Basic vector code, without a coordinate system class

All calculations essentially occur in the same frame.
i, j, k and x, y, z are imported as base vectors and base scalars by default on importing sympy.vector.
delop is a Del operator instance.

Example:

>>> v = 3*i - j
>>> delop ^ v
0

(delop ^ v represents curl of v)
I will have a closer look at the SymPy core for the hashing thing. What you say does seem to make sense.