let rec compute_bindings bindings sigmaR sigma = function
    | [] -> bindings , sigma
    | Fresh _ :: havocs -> compute_bindings bindings sigmaR sigma havocs
    | Update(x,phi) :: havocs ->
        let sigma' = freshen_sigma x sigma in
        let x' = snd (List.find (fun (y,_) -> F.eq_var x y) sigma') in
        let t' = apply sigmaR (phi sigma) in
        compute_bindings ((x',t')::bindings) sigmaR sigma' havocs