从隐式到显式函数定义

时间:2016-02-08 20:27:03

标签: vdm-sl

我一直在使用VDM-SL中的隐式函数定义创建规范,并且它已经很好地完成了。我现在想要使用显式函数定义对规范进行原型设计(此阶段无操作)。

我能看到的一种方法是创建一个模仿隐式规范中定义的函数的新模块,但是给它们明确的定义。

我确信这可以做到,但我怀疑它是理想的。隐式和显式规范之间没有任何联系,尽管一个是另一个的细化。

是否存在从隐式函数定义转换为显式函数定义的推荐方法。从长远来看,我确实想要正式调查,但在第一个例子中,我只想实现隐式函数规范来演示规范的实际应用。

1 个答案:

答案 0 :(得分:1)

有一个完善规范的正式流程,虽然它非常费力,特别是因为目前没有工具支持。

如果保留隐式函数类型签名和前/后条件,那么显式版本是“确定的”是一个细化,假设实现对所有输入都是正确的(这是组合测试可以帮助的地方)。请注意,您还可以为以“隐式”样式编写的函数提供实现(正文),这可以简化操作:

f(x:nat) r:nat
== x + 1        -- This line added to the implicit spec!
pre x > 10
post r < 100