(* Simultaneous evaluation of a list of expressions *)
Fixpoint list_eval (es:list expr) (vs:list val) : pred world :=
match es, vs with
| e::es', v::vs' => eval e v && list_eval es' vs'
| nil, nil => TT
| _, _ => FF
end.

(* rguards is insensitive to 'kseq' constructors on the top of the stack. *)
Lemma rguards_unwind : forall pu R F k1 k2 w1 w2,
unwind_return k1 = unwind_return k2 ->
necR w1 w2 ->
rguards pu R F k1 w1 -> rguards pu R F k2 w2.