let rec set_var (x: var) (r: rslt) (ar: act_ref) (b: b)
: b =
assert (act_valid ar b);
let act = act_assoc_valid ar b in
if List.mem_assoc x act.act_vars then
let data' = upd_assoc x r act.act_vars in
let act' = { act with act_vars = data' } in
act_update ar act' b
else
begin match act.act_parent with
| None -> create_var x r ar b
| Some(ar1) -> set_var x r ar1 b
end