扩展 Alloy 以支持部分实例及相关工作探讨
在逻辑编程和模型验证领域,处理部分函数以及利用部分实例来优化建模和验证过程是非常重要的研究方向。本文将深入探讨相关技术,包括 Alloy 语言扩展以支持部分实例的具体应用,以及与其他相关方法的比较。
相关工作概述
在逻辑中处理部分函数是一个普遍的问题,而本文所解决的问题是该问题的一个具体实例。与其他情况不同的是,这里的越界函数应用是由于分析不足导致的,而非逻辑本身的语义问题,因此要求用户在形式描述中引入保护条件来缓解未定义性的影响是不可接受的。不过,本文的方法与之前的一些方法有相似之处:
- 部分函数逻辑(LPF) :该逻辑用于程序开发的推理,并在 VDM 中被采用。在这种方法中,不仅整数谓词,布尔公式也可能是非指称的,因此需要将真值表扩展到三值逻辑。例如,当“x”等于 0 时,公式 x!=0 => x/x=1 即使 x/x=1 未定义,也会计算为真。本文方法使用三值逻辑来确定量化公式的主体是否未定义,但对整个公式的含义处理不同,是掩盖产生未定义性的绑定,而不是在相同的三值逻辑中解释量化。
- 传统部分函数方法 :本文的实现级语义采用了 Farmer 提出的传统部分函数方法,即所有公式必须有指称,但函数可以是部分的。不过,Farmer 的方法没有明确在给定未定义的 a 时, !(a=a) 和 a!=a 是否有不同的含义,而在标准设置中,由于组合性和谓词互补性的竞争问题,这个问题很难解决。在本文的情况中,非
超级会员免费看
订阅专栏 解锁全文
21

被折叠的 条评论
为什么被折叠?



