dafny

    1热度

    1回答

    考虑以下Dafny代码,试图找到一个元素的数组一个内è: method findE(a:array<int>, e:int, l:int, u:int) returns (result:bool) requires a != null requires 0 <= l <= u < a.Length ensures result <==> exists k | l <=

    17热度

    1回答

    考虑解决100 prisoners and a lightbulb问题的标准策略。这是我尝试它Dafny型号: method strategy<T>(P: set<T>, Special: T) returns (count: int) requires |P| > 1 && Special in P ensures count == (|P| - 1) decrea

    2热度

    1回答

    我开始学习Dafny并学习了不变式。我有这样的代码: function pot(m:int, n:nat): int { if n==0 then 1 else if n==1 then m else if m==0 then 0 else pot(m,n-1) * m } method Pot(m:int, n:nat) returns (x:int

    0热度

    1回答

    我正在研究如何使用dafny验证使用“交换”相邻元素的插入排序,但我无法找到while循环的合理不变量,谁能帮我修复它? 这里是链接:http://rise4fun.com/Dafny/wmYME

    1热度

    1回答

    在试图验证数组支持的通用FIFO队列时,我遇到了一个令人困惑的错误。该队列被发现在this论文中,由Dafny的创建者撰写。 在考虑中的错误是: 除非一个初始化设置为阵列的元素,“数据”的一个新的数组必须具有涉及两行分配一个空的大小 数组通过new Data[whatever]在构造函数和enqueue方法中。 Dafny版本:Dafny 2.0.0.00922技术预览参考0 的完整代码。 cla

    0热度

    1回答

    当编译如下代码: module Interface { function addSome(n: nat): nat ensures addSome(n) > n } module Mod { import A : Interface method m() { assert 6 <= A.addSome(5); print "T

    3热度

    1回答

    我有一个函数sum采用两个阵列a和b作为输入并修改b使得b[i] = a[0] + a[1] + ... + a[i]。我写了这个函数,想用Dafny来验证它。但是,Dafny告诉我,我的循环不变可能不会被循环维护。这里是代码: function sumTo(a:array<int>, n:int) : int requires a != null; requires 0 <=

    0热度

    1回答

    有什么办法来控制Dafny用于目标代码的命名约定? 是否可以在全局范围内使用符号常量?这样的事情: ? global const MaxValue = 10000; ? method Method1 (a : int) returns (b : int) requires a < MaxValue 有什么办法将数值表达式转换为字符串?

    1热度

    1回答

    我是dafny的新手,我试图让这段简单的代码工作。我想计算字符串中char的出现次数。我在第4行收到断言违规。我知道我的功能是找到适量的字符,但显然这个断言存在一些漏洞。我试图在开始使用事前和事后条件之前弄清楚基础知识,并且没有这些基础知识,而且如果没有它们,这应该是可能的。该函数简单地检查字符串中的最后一个字符并返回1或0,并再次调用该函数以切断字符串的尾部,直到它为空。 method Main

    1热度

    1回答

    在下面的代码中,将数组的一个片段复制到另一个数组中,指示源数组保留的循环不变量不会被验证。 这与this question和this other one有关,但我还没有发现任何在这种情况下工作。 method copy (a: array<int>, a0: nat, b: array<int>, b0: nat, len: nat) requires a