(** Debug annotations. *)

(* Specifications: *)
Lemma cast_typeconv:
forall v ty m,
val_casted v ty ->
sem_cast v ty (typeconv ty) m = Some v.
Lemma step_Sdebug_temp:
forall f id ty k e le m v,
le!id = Some v ->
val_casted v ty ->
step2 tge (State f (Sdebug_temp id ty) k e le m)
E0 (State f Sskip k e le m).
Lemma step_Sdebug_var:
forall f id ty k e le m b,
e!id = Some(b, ty) ->
step2 tge (State f (Sdebug_var id ty) k e le m)
E0 (State f Sskip k e le m).
Lemma step_Sset_debug:
forall f id ty a k e le m v v',
eval_expr tge e le m a v ->
sem_cast v (typeof a) ty m = Some v' ->
plus step2 tge (State f (Sset_debug id ty a) k e le m)
E0 (State f Sskip k e (PTree.set id v' le) m).
Lemma step_add_debug_vars:
forall f s e le m vars k,
(forall id ty, In (id, ty) vars -> exists b, e!id = Some (b, ty)) ->
star step2 tge (State f (add_debug_vars vars s) k e le m)
E0 (State f s k e le m).