Proof with eauto with val_erasure erased.
destruct c; simpl...
Qed.

(* Specifications: *)
Lemma erased_updLockSet:
forall tp tp' addr addr' rmap rmap',
threadPool_erasure tp tp' ->
threadPool_erasure (updLockSet tp addr rmap)
(updLockSet tp' addr' rmap').
Lemma erased_updThread:
forall tp tp' i (cnti: containsThread tp i)
(cnti': containsThread tp' i) c c' pmap,
threadPool_erasure tp tp' ->
ctl_erasure c c' ->
threadPool_erasure (updThread cnti c pmap)
(updThreadC cnti' c').
Lemma erased_updThread':
forall tp tp' i (cnti: containsThread tp i)
(cnti': containsThread tp' i) c c' pmap pmap',
threadPool_erasure tp tp' ->
ctl_erasure c c' ->
threadPool_erasure (updThread cnti c pmap)
(updThread cnti' c' pmap').
Lemma erased_updThreadC:
forall tp tp' i (cnti: containsThread tp i)
(cnti': containsThread tp' i) c c',
threadPool_erasure tp tp' ->
ctl_erasure c c' ->
threadPool_erasure (updThreadC cnti c)
(updThreadC cnti' c').
Lemma erased_addThread:
forall tp tp' v arg v' arg' pmap pmap',
threadPool_erasure tp tp' ->
val_erasure v v' ->
val_erasure arg arg' ->
threadPool_erasure (addThread tp v arg pmap)
(addThread tp' v' arg' pmap').