Dafny 将 var 设置为永不更改
Dafny set var to never change
dafny 有没有办法设置 var
并说一旦设置就永远不会改变?
目前我有一个 class 看起来像
class {:autocontracts} Test
{
var max: nat
constructor(maxVal: nat)
ensures max == maxVal
{
max := maxVal;
}
// predicate Valid()...
// all my other methods
}
我的问题是,要使 class 的某些方面正常工作,我必须为每个方法指定 ensures max == old(max)
。有没有办法告诉 dafny,一旦构造函数设置它,max
就永远不会改变,这样我就不需要在每个方法之后都做确保?
使用 const
而非 var
声明字段。
dafny 有没有办法设置 var
并说一旦设置就永远不会改变?
目前我有一个 class 看起来像
class {:autocontracts} Test
{
var max: nat
constructor(maxVal: nat)
ensures max == maxVal
{
max := maxVal;
}
// predicate Valid()...
// all my other methods
}
我的问题是,要使 class 的某些方面正常工作,我必须为每个方法指定 ensures max == old(max)
。有没有办法告诉 dafny,一旦构造函数设置它,max
就永远不会改变,这样我就不需要在每个方法之后都做确保?
使用 const
而非 var
声明字段。