Instance dryResources: Resources:=
    {| res := access_map * access_map;
       lock_info := access_map * access_map |}.Notation C:= (@semC Sem).Notation G:= (@semG Sem).Notation semSem:= (@semSem Sem).Notation thread_pool := (@t dryResources Sem).(** Memories*)
    Definition richMem: Type:= mem.Definition dryMem: richMem -> mem:= fun x => x.Definition option_function {A B} (opt_f: option (A -> B)) (x:A): option B:=
      match opt_f with
        Some f => Some (f x)
      | None => None
      end.Infix "??" := option_function (at level 80, right associativity).Definition build_delta_content (dm: delta_map) (m:mem): delta_content :=
      PTree.map (fun b dm_f =>
                   fun ofs =>
                     match dm_f ofs with
                     | None | Some (None) 
                     | Some (Some Nonempty) => None
                     | Some _ => Some (ZMap.get ofs (Maps.PMap.get b (Mem.mem_contents m)))
                     end) dm.Definition threadStep: forall {tid0 ms m},
        containsThread ms tid0 -> mem_compatible ms m ->
        thread_pool -> mem -> seq.seq mem_event -> Prop:=
      @dry_step.

(* Specifications: *)
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').