fun strip :: "acom ==> com"where "strip SKIP = SKIP" | "strip (x ::= a) = (x ::= a)" | "strip (C🪙1;; C🪙2) = (strip C🪙1;; strip C🪙2)" | "strip (IF b THEN C🪙1 ELSE C🪙2) = (IF b THEN strip C🪙1 ELSE strip C🪙2)" | "strip ({_} WHILE b DO C) = (WHILE b DO strip C)"
text‹Weakest precondition from annotated commands:›
funpre :: "acom ==> assn ==> assn"where "pre SKIP Q = Q" | "pre (x ::= a) Q = (λs. Q(s(x := aval a s)))" | "pre (C🪙1;; C🪙2) Q = pre C🪙1 (pre C🪙2 Q)" | "pre (IF b THEN C🪙1 ELSE C🪙2) Q = (λs. if bval b s then pre C🪙1 Q s else pre C🪙2 Q s)" | "pre ({I} WHILE b DO C) Q = (λs. ∃n. I n s)"
text‹Verification condition:›
fun vc :: "acom ==> assn ==> bool"where "vc SKIP Q = True" | "vc (x ::= a) Q = True" | "vc (C🪙1;; C🪙2) Q = (vc C🪙1 (pre C🪙2 Q) ∧ vc C🪙2 Q)" | "vc (IF b THEN C🪙1 ELSE C🪙2) Q = (vc C🪙1 Q ∧ vc C🪙2 Q)" | "vc ({I} WHILE b DO C) Q = (∀s n. (I (Suc n) s ⟶ pre C (I n) s) ∧ (I (Suc n) s ⟶ bval b s) ∧ (I 0 s ⟶¬ bval b s ∧ Q s) ∧ vc C (I n))"
lemma vc_sound: "vc C Q ==>⊨🪙t {pre C Q} strip C {Q}" proof(induction C arbitrary: Q) case (Awhile I b C) show ?case proof(simp, rule conseq[OF _ While[of I]], goal_cases) case (2 n) show ?case using Awhile.IH[of "I n"] Awhile.prems by (auto intro: strengthen_pre) qed (insert Awhile.prems, auto) qed (auto intro: conseq Seq If simp: Skip Assign)
text‹When trying to extend the completeness proof of the VCG for partial correctness to total correctness one runs into the following problem. In the case of the while-rule, the universally quantified ‹n› i
means that for that premise the induction hypothesis does not yield a single
annotated command ‹C› but merely that for every ‹n› such a ‹C› exists.›
end
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.17 Sekunden
(vorverarbeitet am 2026-04-25)
¤
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.