definition
fcall:: "('s==>'s) ==> 'p ==> ('s ==> 's ==> 's)==>('s ==> 'v) ==> ('v==>('s,'p,'f) com) ==>('s,'p,'f) com"where "fcall init p restore result return = call init p restore (λs t. return (result t))"
definition
lem:: "'x ==> ('s,'p,'f)com ==>('s,'p,'f)com"where "lem x c = c"
primrec switch:: "('s ==> 'v) ==> ('v set × ('s,'p,'f) com) list ==> ('s,'p,'f) com" where "switch v [] = Skip" | "switch v (Vc#vs) = Cond {s. v s ∈ fst Vc} (snd Vc) (switch v vs)"
definition guaranteeStrip:: "'f ==> 's set ==> ('s,'p,'f) com ==> ('s,'p,'f) com" where"guaranteeStrip f g c = Guard f g c"
definition guaranteeStripPair:: "'f ==> 's set ==> ('f × 's set)" where"guaranteeStripPair f g = (f,g)"
primrec guards:: "('f × 's set ) list ==> ('s,'p,'f) com ==> ('s,'p,'f) com" where "guards [] c = c" | "guards (g#gs) c = Guard (fst g) (snd g) (guards gs c)"
definition
while:: "('f × 's set) list ==> 's bexp ==> ('s,'p,'f) com ==> ('s, 'p, 'f) com" where "while gs b c = guards gs (While b (Seq c (guards gs Skip)))"
definition
whileAnno:: "'s bexp ==> 's assn ==> ('s × 's) assn ==> ('s,'p,'f) com ==> ('s,'p,'f) com"where "whileAnno b I V c = While b c"
definition
whileAnnoG:: "('f × 's set) list ==> 's bexp ==> 's assn ==> ('s × 's) assn ==> ('s,'p,'f) com ==> ('s,'p,'f) com"where "whileAnnoG gs b I V c = while gs b c"
definition
whileAnnoFix:: "'s bexp ==> ('a ==> 's assn) ==> ('a ==> ('s × 's) assn) ==> ('a ==> ('s,'p,'f) com) ==> ('s,'p,'f) com"where "whileAnnoFix b I V c = While b (c undefined)"
definition
whileAnnoGFix:: "('f × 's set) list ==> 's bexp ==> ('a ==> 's assn) ==> ('a ==> ('s × 's) assn)==> ('a ==> ('s,'p,'f) com) ==> ('s,'p,'f) com"where "whileAnnoGFix gs b I V c = while gs b (c undefined)"
definition if_rel::"('s ==> bool) ==> ('s ==> 's) ==> ('s ==> 's) ==> ('s ==> 's)==> ('s × 's) set" where"if_rel b f g h = {(s,t). if b s then t = f s else t = g s ∨ t = h s}"
lemma fst_guaranteeStripPair: "fst (guaranteeStripPair f g) = f" by (simp add: guaranteeStripPair_def)
lemma snd_guaranteeStripPair: "snd (guaranteeStripPair f g) = g" by (simp add: guaranteeStripPair_def)
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 und die Messung sind noch experimentell.