(** Redex rules **)

(* Specifications: *)
Lemma typ_beta: forall v1 v2 sigma tau w,
forces w v1 (ty_lam sigma tau) ->
forces w v2 (%sigma) ->
forall v', expr_type (App (val_to_exp v1) (val_to_exp v2)) tau (w,v').
Lemma expr_ty_new: forall k v tau,
forces k v (%tau) ->
forall v', expr_type (New (val_to_exp v)) (ty_ref tau) (k,v').
Lemma expr_type_upd_Update: forall tau sigma w l v e3 v0,
forces w (v_Loc l) (ty_ref tau) ->
forces w v (%tau) ->
expr_type e3 sigma (w,v0) ->
expr_type (Update (Loc l) (val_to_exp v) e3) sigma (w,v0).
Lemma expr_ty_deref_loc : forall l tau a,
expr_type (Loc l) (ty_ref tau) a ->
expr_type (Deref (Loc l)) tau a.