Proof with eauto with val_erasure.
induction vs; simpl...
Qed.
(* TODO: is that still used? *)
(*Lemma val_erasure_list_decode: forall vals vals' typs, val_erasure_list vals vals' -> val_erasure_list (val_casted.decode_longs typs vals) (val_casted.decode_longs typs vals').  Lemma memval_erasure_list_refl: forall vs, memval_erasure_list vs vs. Proof with eauto with val_erasure. induction vs; simpl... Qed.  Hint Immediate memval_erasure_list_refl : val_erasure.  (** ** Lemmas about erased values*)
Definition isDefined v :=
match v with
| Vundef => false
| _ => true
end.

Lemma val_erasure_shru:
forall v1 v2 v1' v2',
val_erasure v1 v1' ->
val_erasure v2 v2' ->
val_erasure (Val.shru v1 v2) (Val.shru v1' v2').