(** [mem_compatible] is preserved by [resume_thread]*)
    Corollary resume_compatible :
      forall (tp tp' : t) m (i : nat) (pf : containsThread tp i)
        (Hcompatible: mem_compatible tp m)
        (Hresume: resume_thread m pf tp'),
        mem_compatible tp' m.(** [mem_compatible] is preserved by [start_thread]*)
    Corollary start_compatible :
      forall (tp tp' : t) m m' (i : nat) (pf : containsThread tp i)
        (Hcompatible: mem_compatible tp m)
        (Hstart: start_thread m pf tp' m'),
        mem_compatible tp' m'.(** [mem_compatible] is preserved by [internal_step]*)
    Corollary internal_step_compatible :
      forall (tp tp' : t) m m' (i : nat) (pf : containsThread tp i)
        (Hcompatible: mem_compatible tp m)
        (Hstep: internal_step pf Hcompatible tp' m'),
        mem_compatible tp' m'.

Lemma addThread_internal_step: forall tp tp' m m' i vf arg pmap (cnti: containsThread tp i) (cnti': containsThread (addThread tp vf arg pmap) i) (Hcomp: mem_compatible tp m) (Hcomp': mem_compatible (addThread tp vf arg pmap) m) (Hinv': invariant (addThread tp vf arg pmap)) (Hstep: internal_step cnti Hcomp tp' m'), internal_step cnti' Hcomp' (addThread tp' vf arg pmap) m'.