let assign ~var value model =
let rec loop vars =
match vars with
(* see if the variable was bound before *)
((var2,assig) :: vars) ->
if var2 =var then
(* then bind it to the new value *)
(var2,value) :: vars
else
(var2,assig) :: (loop vars)
| [] ->
(* else introduce a new binding*)
(var,value) :: []
in
loop model