首页
学习
活动
专区
圈层
工具
发布

Dafny多集
EN

Stack Overflow用户
提问于 2021-04-07 08:59:14
回答 1查看 315关注 0票数 2

在参考手册(http://www.cse.unsw.edu.au/~se2011/DafnyDocumentation/Dafny%20-%20ValueTypes.pdf)中,我们可以发现:如果两个多集对每个元素的计数完全相同,则它们是相等的。然而,如果我断言:

代码语言:javascript
复制
   assert multiset({1,1}) == multiset{1};

所以我理解了一些不对劲的地方。

例如,为了证明这一点:

代码语言:javascript
复制
lemma seqSplit(s:seq<int>, c:int, p:int, f:int)
       requires 0<=c<=p<=f+1<=|s|
       ensures multiset(s[c..f+1]) == multiset(s[c..p])+multiset(s[p..f+1])

什么是必要的?我一开始是:

代码语言:javascript
复制
       assert forall i :: c<=i<=f ==> 
              (s[i] in multiset(s[c..f+1]) <==> (s[i] in multiset(s[c..p]) || s[i] in multiset(s[p..f+1])));

它验证了,我想说,它与“确保”中的内容相同,但似乎并非如此。有什么帮助吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-07 17:08:36

multiset({1,1})的意思是“构造集合{1,1},然后将其转换为多集”。由于set {1,1}和set {1}是相同的,所以您的断言会传递。

我想你想要multiset{1,1}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66982741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档