在我的程序中,我有一个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]
是否有更好的方法可以使用其他关键字in
或exist
或match
,如果它不被弃用?
答案 0 :(得分:2)
没有内置概念&#34;不包含重复&#34;在达菲尼。
我认为你表达它的方式非常好。另一种(更长,相当,但可能稍微更清晰)的方式是
forall i, j | 0 <= i < a.Length && 0 <= j < a.Length && i != j :: a[i] != a[j]
Dafny很容易表明两种写作方式是等价的。