(*Join juice from all threads *)
Fixpoint join_list (ls: seq.seq res) r:=
if ls is phi::ls' then exists r', join phi r' r /\ join_list ls' r' else
app_pred emp r.  (*Or is is just [amp r]?*)
Definition join_threads (tp : thread_pool) r:= join_list (getThreadsR tp) r.

Lemma getThreadsR_addThread tp v1 v2 phi :
getThreadsR (addThread tp v1 v2 phi) = getThreadsR tp ++ phi :: nil.