(* evaluate expr2 using a new assignment function and store *)
in eval expr2 ((c, new_index) :: g) s''
| Change (c : char) expr1 expr2 ->
let (new_value, s') = eval expr1 g s
(* lookup which index is associated with Var c *)
(* evaluate expr2 using a new assignment function and store *)
in eval expr2 ((c, new_index) :: g) s''
| Change (c : char) expr1 expr2 ->
let (new_value, s') = eval expr1 g s
(* lookup which index is associated with Var c *)