definition BInit :: "'a stfun \ 'a list stfun \ 'a stfun \ stpred" where"BInit ic q oc == PRED q = #[]"
definition Enq :: "'a stfun \ 'a list stfun \ 'a stfun \ action" where"Enq ic q oc == ACT (ic$ \ $ic) \<and> (q$ = $q @ [ ic$ ]) \<and> (oc$ = $oc)"
definition Deq :: "'a stfun \ 'a list stfun \ 'a stfun \ action" where"Deq ic q oc == ACT ($q \ #[]) \<and> (oc$ = hd< $q >) \<and> (q$ = tl< $q >) \<and> (ic$ = $ic)"
definitionNext :: "'a stfun \ 'a list stfun \ 'a stfun \ action" where"Next ic q oc == ACT (Enq ic q oc \ Deq ic q oc)"
(* temporal formulas *)
definition IBuffer :: "'a stfun \ 'a list stfun \ 'a stfun \ temporal" where"IBuffer ic q oc == TEMP Init (BInit ic q oc) \<and> \<box>[Next ic q oc]_(ic,q,oc) \<and> WF(Deq ic q oc)_(ic,q,oc)"
definition Buffer :: "'a stfun \ 'a stfun \ temporal" where"Buffer ic oc == TEMP (\\q. IBuffer ic q oc)"
(* ---------------------------- Data lemmas ---------------------------- *)
(*FIXME: move to theory List? Maybe as (tl xs = xs) = (xs = [])"?*) lemma tl_not_self [simp]: "xs \ [] \ tl xs \ xs" by (auto simp: neq_Nil_conv)
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.