Definition Jspec' := (@OK_spec (Concurrent_Espec unit CS ext_link)).

(* Specifications: *)
Lemma preservation_Kinit (Gamma : funspecs) (n : nat) (ge : genv) (m m' : Memory.mem) (i : nat) (tr tr' : event_trace) (sch : list nat) sch' (tp tp' : jstate ge) (jmstep : @JuicyMachine.machine_step _ (ClightSemanticsForMachines.Clight_newSem ge) _ HybridCoarseMachine.DilMem JuicyMachineShell HybridMachineSig.HybridCoarseMachine.scheduler (i :: sch) tr tp m sch' tr' tp' m') (INV : @state_invariant (@OK_ty (Concurrent_Espec unit CS ext_link)) Jspec' _ Gamma (S n) (m, (tr, i :: sch, tp))) (Phi : rmap) (compat : mem_compatible_with tp m Phi) (extcompat : joins (ghost_of Phi) (Some (ghost_PCM.ext_ref tt, NoneP) :: nil)) (lev : @level rmap ag_rmap Phi = S n) (envcoh : env_coherence Jspec' ge Gamma Phi) (sparse : @lock_sparsity lock_info (lset tp)) (lock_coh : lock_coherence' tp Phi m compat) (safety : @threads_safety (@OK_ty (Concurrent_Espec unit CS ext_link)) Jspec' _ m tp Phi compat (S n)) (wellformed : threads_wellformed tp) (unique : unique_Krun tp (i :: sch)) (Ei : ssrnat.leq (S i) (pos.n (num_threads tp)) = true) (cnti : containsThread tp i) (v1 v2 : val) (Eci : getThreadC i tp cnti = @Kinit semC v1 v2) : (* ============================ *) @state_invariant (@OK_ty (Concurrent_Espec unit CS ext_link)) Jspec' _ Gamma n (m', (tr', sch', tp')) \/ @state_invariant (@OK_ty (Concurrent_Espec unit CS ext_link)) Jspec' _ Gamma (S n) (m', (tr', sch', tp')).
Theorem preservation ge Gamma n state state' : ~ blocked_at_external state CREATE -> ~ blocked_at_external state MKLOCK -> ~ blocked_at_external state FREE_LOCK -> ~ blocked_at_external state UNLOCK -> state_step state state' -> state_invariant Jspec' Gamma (S n) state -> state_bupd(ge := ge) (state_invariant Jspec' Gamma n) state' \/ state_bupd(ge := ge) (state_invariant Jspec' Gamma (S n)) state'.
Theorem progress ge Gamma n state : ~ blocked_at_external state CREATE -> state_invariant Jspec' Gamma (S n) state -> exists state', state_step(ge := ge) state state'.
Lemma is_EF_external ef : ext_spec_type Jspec' ef -> exists name sg, ef = EF_external name sg.
Lemma Jspec'_juicy_mem_equiv : ext_spec_stable juicy_mem_equiv (JE_spec _ Jspec').
Lemma Jspec'_hered : ext_spec_stable age (JE_spec _ Jspec').
Lemma Jspec'_jsafe_phi ge n ora c jm ext : cl_at_external c = Some ext -> jsafeN Jspec' ge n ora c jm -> jsafe_phi Jspec' ge n ora c (m_phi jm).