在Dafny中迭代有限集对象的元素的最佳方法是什么?工作代码的一个例子令人愉快。
答案 0 :(得分:1)
这个答案解释了如何使用while循环,而不是通过定义迭代器。诀窍是使用“assign that that”操作符, :|,获取一个值y使得y在集合中,然后在y集合中重复该集合,继续直到没有更多元素。减少条款在这里是必要的。有了它,Dafny证明了while循环的终止,但没有它,不是。
method Main()
{
var x: set<int> := {1, 2, 3};
var c := x;
while ( c != {} )
decreases c;
{
var y :| y in c;
print y, ", ";
c := c - { y };
}
}