我该如何表现呢? “(SKIP,s)⇒s”, 这是大步骤语义规则,终止于伊莎贝尔?
Big Step Semantics定义如下“(SKIP,s)⇒s”是一个命令。
inductive big_step :: "com × state ⇒ state ⇒ bool" where
Skip: "(SKIP,s) ⇒ s" |
Assign: "(x ::= a,s) ⇒ s(x := aval a s)" |
Seq: "⟦ (c⇩1,s⇩1) ⇒ s⇩2; (c⇩2,s⇩2) ⇒ s⇩3 ⟧ ⟹ (c⇩1;;c⇩2, s⇩1) ⇒ s⇩3" |
IfTrue: "⟦ bval b s; (c⇩1,s) ⇒ t ⟧ ⟹ (IF b THEN c⇩1 ELSE c⇩2, s) ⇒ t" |
IfFalse: "⟦ ¬bval b s; (c⇩2,s) ⇒ t ⟧ ⟹ (IF b THEN c⇩1 ELSE c⇩2, s) ⇒ t" |
我使用正式定义来表示总体正确性
⊫ {P} c {Q} ≡ ∀s. P s ⟶ (∃ t. (c, s) ⇒ t ∧ Q t)
所以我的引理现在有以下形式:
lemma "skip: {P} skip {Q} ≡ ∀s. P s ⟶ (∃ t. (skip, s) ⇒ t ∧ Q t)"
引理的定义是否正确,以表明它终止了?