说我在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)上的排序提出建议。
答案 0 :(得分:0)
您需要为数组元素(例如reads
)添加一个reads set x | x in a[..]
子句。
展望未来,在使用modifies
/ reads
子句时,您可能还想研究http://leino.science/papers/krml221.pdf的第9章(动态框架)。