我见过的最强后置条件谓词变换器的每个公式都提出了如下分配规则:
sp(X:=E, P) = ∃v. (X=E[v/X] ∧ P[v/X])
我想知道,为什么上述规则中存在的(因而存在量化的变量“v”)是必要的?在我看来,最强的后置条件谓词变换器几乎与符号评估相同,因为你保持一个状态(从变量到值的映射)和一个路径条件(在程序中的某个特定点必须为真的谓词)。然而,象征性评价并不依赖于存在量词。
所以,我想我必须在这里遗漏一些东西。任何帮助表示赞赏!
答案 0 :(得分:0)
我将给出一些直观的描述,因为你对符号评估有一些了解
如果您有一个任意的变量映射,那么在分析过程中查看之前,您无法对程序中的未来状态变化做任何说明。
符号评估会记住每个选定的路径[作为状态空间分隔],因此不需要包含在评估公式中来解决。
然而,你在这里争论所有可能的路径,因此需要一个任意的公式来描述行为。
假设你将变量保留在公式中,那么你只会争论可能的运行的一条路径。如果您知道您的变量不会引发其他路径,那么您可以简化此行为。
拥有最弱的自由主义前提条件,您知道从哪条路径开始并将所有路径包装在一起以证明系统的属性。