Instance ClightAxioms : @CoreLanguage.SemAxioms (ClightSem ge).

(* Specifications: *)
Lemma CoreSafe_star: forall n U tr tp m tid (c : @semC (ClightSem ge)) c' tp' m' ev
(HschedN: schedPeek U = Some tid)
(Htid: containsThread tp tid)
(Hm: fst (getThreadR(resources:=dryResources) Htid) = getCurPerm m)
(Hcmpt: mem_compatible tp m)
(Hinv: invariant tp)
(Hcode: getThreadC Htid = Krun c)
(Hcoresteps: ev_star ge c m ev c' m')
(Htp': tp' = updThread Htid (Krun c') (getCurPerm m', snd (getThreadR Htid)))
(Hsafe: csafe(ThreadPool:= OrdinalPool.OrdinalThreadPool(Sem:=ClightSem ge))
(machineSig:= HybridMachine.DryHybridMachine.DryHybridMachineSig)
(yield U, seq.cat tr (map (fun mev => Events.internal tid mev) ev), tp') (diluteMem m') n),
csafe(ThreadPool:= OrdinalPool.OrdinalThreadPool(Sem:=ClightSem ge))
(machineSig:= HybridMachine.DryHybridMachine.DryHybridMachineSig)
(U, tr, tp) m n.
Lemma CoreSafe_plus : forall n U tr tp m tid (c : @semC (ClightSem ge)) c' tp' m' ev m1
(HschedN: schedPeek U = Some tid)
(Htid: containsThread tp tid)
(Hcmpt: mem_compatible tp m)
(Hrestrict_pmap: restrPermMap (proj1 (compat_th _ _ Hcmpt Htid)) = m1)
(Hinv: invariant tp)
(Hcode: getThreadC Htid = Krun c)
(Hcoresteps: ev_plus ge c m1 ev c' m')
(Htp': tp' = updThread Htid (Krun c') (getCurPerm m', snd (getThreadR Htid)))
(Hsafe: csafe(ThreadPool:= OrdinalPool.OrdinalThreadPool(Sem:=ClightSem ge))
(machineSig:= HybridMachine.DryHybridMachine.DryHybridMachineSig)
(yield U, seq.cat tr (map (fun mev => Events.internal tid mev) ev), tp') (diluteMem m') n),
csafe(ThreadPool:= OrdinalPool.OrdinalThreadPool(Sem:=ClightSem ge))
(machineSig:= HybridMachine.DryHybridMachine.DryHybridMachineSig)
(U, tr, tp) m (S n).