(*Join juice from all locks*)
    Fixpoint join_list' (ls: seq.seq (option res)) (r:option res):=
      if ls is phi::ls' then exists (r':option res),
          @join _ (@Join_lower res _) phi r' r /\ join_list' ls' r' else r=None.Definition join_locks tp r:= join_list' (map snd (AMap.elements (lset tp))) r.(*Join all the juices*)
    Inductive join_all: thread_pool -> res -> Prop:=
      AllJuice tp r0 r1 r:
        join_threads tp r0 ->
        join_locks tp r1 ->
        join (Some r0) r1 (Some r) ->
        join_all tp r.(*Join all the juices*)
    Inductive join_all: thread_pool -> res -> Prop:=
      AllJuice tp r0 r1 r:
        join_threads tp r0 ->
        join_locks tp r1 ->
        join (Some r0) r1 (Some r) ->
        join_all tp r.

(* Specifications: *)
Lemma lockSet_in_juic_weak: forall lset juice, lockSet_in_juicyLocks lset juice -> lockSet_in_juicyLocks' lset juice.