Opaque OrdinalPool.getThreadR.

(* Specifications: *)
Lemma updThread_internal_step:
forall tp tp' m m' i j c pmap
(Hneq: i <> j)
(cnti: containsThread tp i)
(cnti': containsThread tp' i)
(cntj: containsThread tp j)
(cntj': containsThread (updThread cnti c pmap) j)
(Hcomp: mem_compatible tp m)
(Hcomp': mem_compatible (updThread cnti c pmap) m)
(Hinv': invariant (updThread cnti c pmap))
(Hstep: internal_step cntj Hcomp tp' m'),
internal_step cntj' Hcomp' (updThread cnti' c pmap) m'.
Lemma updThread_internal_execution:
forall tp tp' m m' i j xs c pmap
(cnti: containsThread tp i)
(cnti': containsThread tp' i)
(Hinv: invariant (updThread cnti c pmap))
(Hcomp' : mem_compatible (updThread cnti c pmap) m)
(Hneq: i <> j)
(Hexec: internal_execution [seq x <- xs | x == j] tp m tp' m'),
internal_execution [seq x <- xs | x == j] (updThread cnti c pmap) m
(updThread cnti' c pmap) 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'.
Lemma addThread_internal_execution:
forall tp tp' m m' i j xs vf arg pmap
(Hneq: i <> j)
(Hinv': invariant (addThread tp vf arg pmap))
(Hcomp': mem_compatible (addThread tp vf arg pmap) m)
(Hexec: internal_execution [seq x <- xs | x == j] tp m tp' m'),
internal_execution [seq x <- xs | x == j]
(addThread tp vf arg pmap) m
(addThread tp' vf arg pmap) m'.
Lemma remLock_internal_step:
forall tp tp' m m' j (cntj: containsThread tp j) b ofs
(Hcomp: mem_compatible tp m)
(Hcomp': mem_compatible (remLockSet tp (b,ofs)) m)
(cntj': containsThread (remLockSet tp (b,ofs)) j)
(Hstep: internal_step cntj Hcomp tp' m'),
internal_step cntj' Hcomp' (remLockSet tp' (b,ofs)) m'.
Lemma remLock_internal_execution:
forall tp tp' m m' j xs b ofs
(Hcomp': mem_compatible (remLockSet tp (b,ofs)) m)
(Hexec: internal_execution [seq x <- xs | x == j] tp m tp' m'),
internal_execution [seq x <- xs | x == j] (remLockSet tp (b, ofs)) m
(remLockSet tp' (b,ofs)) m'.
Lemma internal_step_nextblock:
forall tp m tp' m' i (cnti: containsThread tp i)
(Hcomp: mem_compatible tp m)
(Hstep: internal_step cnti Hcomp tp' m'),
(Mem.nextblock m <= Mem.nextblock m')%positive.
Lemma internal_execution_nextblock:
forall tp m tp' m' xs
(Hexec: internal_execution xs tp m tp' m'),
(Mem.nextblock m <= Mem.nextblock m')%positive.