是否有用于对编程语言语义和类型系统进行原型制作的工具,并且还允许对标准属性(例如类型健全性)进行某种模型检查?
我之所以这样问,是因为我正在读一本有关Alloy的书,它提供了我想要的确切功能,但是对于使用关系逻辑表示的模型而言。
我知道Ott,但是它没有这种“模型检查”功能,因为它专注于为证明助手系统生成代码。
任何有关这种工具存在的参考都将是不错的。
是否有用于对编程语言语义和类型系统进行原型制作的工具,并且还允许对标准属性(例如类型健全性)进行某种模型检查?
我之所以这样问,是因为我正在读一本有关Alloy的书,它提供了我想要的确切功能,但是对于使用关系逻辑表示的模型而言。
我知道Ott,但是它没有这种“模型检查”功能,因为它专注于为证明助手系统生成代码。
任何有关这种工具存在的参考都将是不错的。
Answers:
尽管有些框架是专门为对编程语言进行原型设计(包括它们的语义,类型系统,评估以及检查它们的属性)而创建的,但是最佳选择取决于您的特定情况和特定需求。
话虽如此,您可能会选择多种选择(可能并不那么独特)(其中包括您已经提到的替代方法):
请注意,在使用框架/工具的难易程度(例如,在纸上或在Latex中进行定义一样容易)与检查语言属性的机制(例如嵌入语言)之间的权衡之间需要权衡定理证明者中的语言可以检查非常复杂的属性)。
[2] 丹尼尔·杰克逊。合金:一种轻量级的对象建模符号。TOSEM,2002年。
[3] Greg Dennis,Felix Chang和Daniel Jackson。SAT的代码模块化验证。ISSTA,2006年
[4] Coq正式证明管理系统