diff --git a/pystencils/astnodes.py b/pystencils/astnodes.py
index 8ec80917af20aefc5883c68ac51f360005b4350b..498bbeec0af001f83976576e28285acaf86ca3a8 100644
--- a/pystencils/astnodes.py
+++ b/pystencils/astnodes.py
@@ -538,7 +538,7 @@ class LoopOverCoordinate(Node):
 class SympyAssignment(Node):
     def __init__(self, lhs_symbol, rhs_expr, is_const=True, use_auto=False):
         super(SympyAssignment, self).__init__(parent=None)
-        self._lhs_symbol = lhs_symbol
+        self._lhs_symbol = sp.sympify(lhs_symbol)
         self.rhs = sp.sympify(rhs_expr)
         self._is_const = is_const
         self._is_declaration = self.__is_declaration()
@@ -621,6 +621,12 @@ class SympyAssignment(Node):
         printed_rhs = sp.latex(self.rhs)
         return "${printed_lhs} \\leftarrow {printed_rhs}$".format(printed_lhs=printed_lhs, printed_rhs=printed_rhs)
 
+    def __hash__(self):
+        return hash((self.lhs, self.rhs))
+
+    def __eq__(self, other):
+        return type(self) == type(other) and (self.lhs, self.rhs) == (other.lhs, other.rhs)
+
 
 class ResolvedFieldAccess(sp.Indexed):
     def __new__(cls, base, linearized_index, field, offsets, idx_coordinate_values):