Remark in_remove:
forall (A: Type) (eq: forall (x y: A), {x=y}+{x<>y}) x y l,
In y (List.remove eq x l) <-> x <> y /\ In y l.

Lemma update_reg_charact:
forall n rd vd r v,
wf_numbering n ->
In r (PMap.get v (update_reg n rd vd)) ->
PTree.get r (PTree.set rd vd n.(num_reg)) = Some v.