问题是:
P1 {C} Q1
-------------------------
P1 && P2 {C} Q1||Q2
此规则有效吗?
我该怎样处理这样的事情?我能想到的只是试图找到一个错误的例子。
我一直试图想出它,以便P1&&amp ;; P2使Q1和Q2都假,但我想不出来。因此,我倾向于这是有效的,但我不知道该去哪里证明它...这个类的文本是绝对的垃圾,我找不到任何在线资源的正确性陈述的组合......
答案 0 :(得分:2)
我假设这些是Hoare三元组,通常表示为{P} C {Q}
;我还使用Wikipedia作为参考。
所以你的规则:
{P1} C {Q1}
-----------------------
{P1 && P2} C {Q1 || Q2}
有效!
直观地说,如果你解读逻辑就很清楚了:
{P1} C {Q1}
表示:只要P1
成立,Q1
将在执行命令C
后保留。P1 && P2
成立,P1
成立。Q1
成立,Q1 || Q2
成立。您可以将这些语句拼凑在一起,看看为什么您的规则必须有效:P1 && P2
隐含P1
,因此当您执行C
时,您会得到假设Q1
,这意味着Q1 || Q2
。
因此{P1 && P2} C {Q1 || Q2}
,只要您假设{P1} C {Q1}
,这正是您的规则所声明的内容。
您可以使用以下规则(摘自维基百科):
后果规则
P' -> P, {P} C {Q}, Q -> Q'
---------------------------
{P'} C {Q'}
您只需将P'
设为P1 && P2
,将P
设为P1
,将Q
设为Q1
,最后设为Q'
为Q1 || Q2
。