End Executions.
Section FineGrainedExecutions.
Context
{Sem : Semantics}
{initU : seq.seq nat}
{SemAx : CoreLanguage.SemAxioms}.
Existing Instance dryResources.
Existing Instance HybridFineMachine.scheduler.
Existing Instance OrdinalPool.OrdinalThreadPool.
Existing Instance DryHybridMachineSig.
Existing Instance FineDilMem.
Existing Instance dryFineMach.

(* Specifications: *)
Lemma step_event_sched:
forall U tr tp m U' ev tr_pre tr_post tp' m'
(Hstep: MachStep (U, tr, tp) m
(U', tr ++ tr_pre ++ [:: ev] ++ tr_post, tp') m'),
U = (thread_id ev) :: U'.
Lemma step_ev_contains:
forall U tr tp m U' ev
tr_pre tr_post tp' m'
(Hstep: MachStep (U, tr, tp) m
(U', tr ++ tr_pre ++ [:: ev] ++ tr_post, tp') m'),
containsThread tp (thread_id ev) /\ containsThread tp' (thread_id ev).
Lemma multi_step_mem_compatible :
forall U tr tp m U' tr' tp' m'
(Hexec: multi_step (U, tr, tp) m (U', tr', tp') m'),
mem_compatible tp m \/ tp = tp' /\ m = m' /\ U = U' /\ tr = tr'.
Lemma multi_step_invariant :
forall U tr tp m U' tr' tp' m'
(Hexec: multi_step (U, tr, tp) m (U', tr', tp') m'),
invariant tp \/ tp = tp' /\ m = m' /\ U = U' /\ tr = tr'.
Lemma multi_step_containsThread :
forall U tp tr m U' tp' tr' m' i
(Hexec: multi_step (U, tr, tp) m (U', tr', tp') m'),
containsThread tp i -> containsThread tp' i.
Lemma multi_step_valid_block:
forall U tr tp m U' tr' tp' m' b
(Hexec: multi_step (U, tr, tp) m (U', tr', tp') m')
(Hvalid: Mem.valid_block m b),
Mem.valid_block m' b.