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 声明字段。