Definition pack_res_inv (R: pred rmap) := SomeP rmaps.Mpred (fun _ => R) .Notation Kblocked := (threadPool.Kblocked).Definition threadStep : forall {tid0 ms m},
        containsThread ms tid0 -> mem_compatible ms m ->
        thread_pool -> mem -> list mem_event -> Prop:=
      @juicy_step.

(* Specifications: *)
Lemma threadStep_equal_run: forall i tp m cnt cmpt tp' m' tr, @threadStep i tp m cnt cmpt tp' m' tr -> forall j, (exists cntj q, @getThreadC _ _ _ j tp cntj = Krun q) <-> (exists cntj' q', @getThreadC _ _ _ j tp' cntj' = Krun q').
Lemma threadStep_at_Krun: forall i tp m cnt cmpt tp' m' tr, @threadStep i tp m cnt cmpt tp' m' tr -> (exists q, @getThreadC _ _ _ i tp cnt = Krun q).
Lemma threadStep_equal_run: forall i tp m cnt cmpt tp' m' tr, @threadStep i tp m cnt cmpt tp' m' tr -> forall j, (exists cntj q, @getThreadC _ _ _ j tp cntj = Krun q) <-> (exists cntj' q', @getThreadC _ _ _ j tp' cntj' = Krun q').