Library mcertikos.proc.QueueInitGenLinkSource
Require Import liblayers.compat.CompatLayers.
Require Import liblayers.compat.CompatClightSem.
Require Import LAsmModuleSemDef.
Require Import CompCertiKOS.
Require Import GlobIdent.
Require Import CDataTypes.
Require Import PQueueIntroCSource.
Require Import CompCertiKOSproof.
Require Import RealParams.
Require Import I64Layer.
Require Import PQueueIntro.
Section WITHCOMPCERTIKOS.
Context `{compcertikos_prf: CompCertiKOS}.
Context `{real_params_prf : RealParams}.
Context `{multi_oracle_prop: MultiOracleProp}.
Definition PQueueInit_impl: res LAsm.module :=
M_enqueue <- CompCertiKOS.transf_module (enqueue ↦ f_enqueue);
M_dequeue <- CompCertiKOS.transf_module (dequeue ↦ f_dequeue);
M_queue_rmv <- CompCertiKOS.transf_module (queue_rmv ↦ f_queue_rmv);
M_tdqueue_init <- CompCertiKOS.transf_module (tdqueue_init ↦ f_tdqueue_init);
M <- ret ((M_enqueue ⊕ M_dequeue ⊕ M_queue_rmv ⊕ M_tdqueue_init) ⊕ ∅);
_ <- eassert nil (LayerOK (〚M〛 (pqueueintro ⊕ L64) ⊕ pqueueintro ⊕ L64));
ret M.
End WITHCOMPCERTIKOS.
Require Import liblayers.compat.CompatClightSem.
Require Import LAsmModuleSemDef.
Require Import CompCertiKOS.
Require Import GlobIdent.
Require Import CDataTypes.
Require Import PQueueIntroCSource.
Require Import CompCertiKOSproof.
Require Import RealParams.
Require Import I64Layer.
Require Import PQueueIntro.
Section WITHCOMPCERTIKOS.
Context `{compcertikos_prf: CompCertiKOS}.
Context `{real_params_prf : RealParams}.
Context `{multi_oracle_prop: MultiOracleProp}.
Definition PQueueInit_impl: res LAsm.module :=
M_enqueue <- CompCertiKOS.transf_module (enqueue ↦ f_enqueue);
M_dequeue <- CompCertiKOS.transf_module (dequeue ↦ f_dequeue);
M_queue_rmv <- CompCertiKOS.transf_module (queue_rmv ↦ f_queue_rmv);
M_tdqueue_init <- CompCertiKOS.transf_module (tdqueue_init ↦ f_tdqueue_init);
M <- ret ((M_enqueue ⊕ M_dequeue ⊕ M_queue_rmv ⊕ M_tdqueue_init) ⊕ ∅);
_ <- eassert nil (LayerOK (〚M〛 (pqueueintro ⊕ L64) ⊕ pqueueintro ⊕ L64));
ret M.
End WITHCOMPCERTIKOS.