有没有办法在dafny中读取类对象数组的字段

时间:2019-11-04 12:25:27

标签: dafny

说我在dafny中有一个Player类,其中一个我想排序的字段称为score。在dafny中,有没有一种方法可以访问课程外的课程字段。这是一个片段:

predicate PlayersSorted(a: array<Player>)
reads a
{
  forall j, k :: 0 <= j < k < a.Length ==> a[j].score <= a[k].score
}

这在尝试访问得分字段时给出错误insufficient reads clause to read field,但是我似乎找不到在我的手册中允许我执行此操作的read子句。如果这不可能,那么任何人都可以对如何验证类(如object)上的排序提出建议。

1 个答案:

答案 0 :(得分:0)

您需要为数组元素(例如reads)添加一个reads set x | x in a[..]子句。

展望未来,在使用modifies / reads子句时,您可能还想研究http://leino.science/papers/krml221.pdf的第9章(动态框架)。