Dafny,数组中没有重复项

时间:2018-05-24 11:11:03

标签: z3 verification dafny

在我的程序中,我有一个sorted谓词。

forall i,j :: 0<=i<j<a.Length ==> a[i]<a[j]

我认为只检查<而不是<=可以避免数组中的重复,但无论如何我想要一个避免重复的谓词。 我已经使用了排序谓词但检查了不相等

forall i,j :: 0<=i<j<a.Length ==> a[i]!=a[j]

是否有更好的方法可以使用其他关键字inexistmatch,如果它不被弃用?

1 个答案:

答案 0 :(得分:2)

没有内置概念&#34;不包含重复&#34;在达菲尼。

我认为你表达它的方式非常好。另一种(更长,相当,但可能稍微更清晰)的方式是

forall i, j | 0 <= i < a.Length && 0 <= j < a.Length && i != j :: a[i] != a[j]

Dafny很容易表明两种写作方式是等价的。