'Tests for equality.
It is very import to note that this is only as good as the SymPy
equality test; False does not always mean they are not equivalent
Vectors.
If other is 0, and self is empty, returns True.
If other is 0 and self is not empty, returns False.
If none of the above, only accepts other as a Vector.'

def __eq__(self, other):

    if (other == 0):
        other = Vector(0)
    try:
        other = _check_vector(other)
    except TypeError:
        return False
    if ((self.args == []) and (other.args == [])):
        return True
    elif ((self.args == []) or (other.args == [])):
        return False
    frame = self.args[0][1]
    for v in frame:
        if (expand(((self - other) & v)) != 0):
            return False
    return True
