dafny相关内容
这个消息会有点长,但那是因为我想尽可能地解释它. 在 Dafny 中,我遇到了下一个问题:给定一个数组,计算发生这种情况的长度为 k 的段的数量;片段左半部分的正数大于或等于右半部分. 作为一个例子(想象段只能是偶数,所以没有讨论半是什么): k=2 --->计数(数组[-4,-2,2,1],k)--->2,因为 [-4,-2] 满足并且 [2,1]k=4 --->计数(数组[-4,
..
我正在尝试构建和运行一个 James Wilcox 结合 Dafny 代码和 C# 代码的示例程序.我在 Mac 上使用 mono.该答案中的构建命令对我不起作用: $ dafny fileiotest.dfy fileionative.cs达夫尼 3.0.0.20820Dafny 程序验证器完成 4 个验证,0 个错误编译后的程序写入 fileiotest.cs将程序编译为 fileiotes
..
我使用的是最新的 Dafny 和 VScode.但是在 macOS 11.5 上 Dafny 代码 function method Size(t: Tree): nat减少 t{匹配t案例叶 =>1case Node(l,r) =>尺寸(l)+ 尺寸(r)}方法 Main() {var tl:Tree := 叶子;var tc:Tree := Node(Node(Leaf, Leaf),Leaf
..
这是一个简单的 Dafny 程序:两行代码和三个断言. 方法 Main(){var S := set s: int |0 S 的基数是 50,但 Dafny 无法验证此声明,如书面所述.同样,T显然是S的子集,Dafny可以验证这个说法;但 T 也是 S 的真子集,Dafny 无法验证这一说法. 导致这些困难的“幕后"是什么,正在学习和使用 Dafny 的人可能会预见和避免或处理这些困
..
我正在尝试在 Dafny 中进行多态性,但我无法使其工作.我没有找到任何文档来帮助我解决这个问题.这是代码:https://rise4fun.com/Dafny/uQ1w trait Atom {叶?:布尔;}类叶子扩展原子{构造函数(){这个.叶子?:= 真;}}类节点扩展原子{左变量:原子;构造函数(){这个.叶子?:=假;this.left := new Leaf();}}方法 Main(
..
这个消息会有点长,但那是因为我想尽可能地解释它. 在 Dafny 中,我遇到了下一个问题:给定一个数组,计算发生这种情况的长度为 k 的段的数量;片段左半部分的阳性数大于或等于右半部分. 举个例子(想象段只能是偶数,所以没有关于一半是什么的讨论): k=2 --->计数(数组 [-4,-2,2,1],k)--->2,因为 [-4,-2] 满足并且 [2,1]k=4--->计数(数组
..
我一直在研究Dafny中的引理的用法,但发现很难理解,显然以下示例无法验证,很可能是因为Dafny没有看到归纳法或诸如引理之类的证明计数属性?基本上,我不知道我该如何定义或需要定义什么来帮助说服Dafny计数是归纳的,等等.一些保证和不变性规范不是必需的,但这不是重点.顺便说一句,这在Spec#中更容易. 功能计数(项:seq
..
我正尝试通过dafny来证明BFS的某些属性,但到目前为止,我甚至无法证明终止. 算法的进展是通过以下事实来保证的:节点一旦被着色为 false (被访问),它将不被着色为 true 再次. 仍然,我很难把这个事实翻译成正式的dafny 减少 : class Graph {var adjList:seq> ;;}方法BFS(G:Grap
..
一个非常简单的乘法代码: 方法Product1(m:nat,n:nat)返回(res:nat) 确保res == m * n; { var m1:nat:= 0; var n1:nat:= 0; res:= 0; 而(m1 { n1:= 0; 而(n1 { res:= res +1; n1:= n1 +1; } m1:= m1 + 1; } }
..
我成功编写了一个经过验证的Dafny程序,该程序给出了一个整数数组,并返回了最长的单调前缀的长度。永久链接位于此处。我希望能够检查Dafny使用的SMT文件,即使没有错误。我尝试了各种标志选项,例如: $ dafny example_longest_monotone.dfy / useSmtOutputFormat /printModelToFile:smt_file.smt
..
在创建我在dafny中创建的类类型的对象数组时遇到问题。问题是初始化该类型的新数组时,我在vscode中遇到此错误: 除非为该数组提供了初始化程序元素,则新的“杯子”数组必须为空大小 这是代码(实际上是剥离后的版本,仍然说明了问题): 数据类型Drink = WATER |柠檬水|咖啡| TEA 课堂杯{ var量:int var Drink_type:饮料 var
..
已更新 解决一些dafny问题的问题,下面将使用给定的类和相应的方法进行介绍。如果您需要其他东西,请告诉我,谢谢。链接也会使用rise4fun中的所有这些代码进行更新。 class TextEdit { var text:array
..
问题很简单:为什么断言下面的语句会返回“违反声明”。 方法test() { var a:= new int [5]; a [0]:= 1; a [1]:= 1; a [2]:= 2; a [3]:= 3; a [4]:= 3; var b:= new int [3]; b [0]:= 1; b [1]:= 2; b [2]:= 3; assert(
..
我是Dafny的新手,遇到了一些我无法弄清楚的错误。 在我的Dafny程序中,用于insertSort(代码在这里),我不明白为什么会得到无效的逻辑表达式上的While循环遍历变量 i 。 while(i
..
嗨,我有一个类似 map 的地图,我希望进行反向查找,即从一个值中找到一个键。 在Dafny中有没有办法做到这一点(例如 map.getKey(value))呢? 我想一种解决方案是将地图反过来,这样我就可以将 map 反过来 map
..
一种将整数数组的负元素复制到另一个数组中的方法具有以下属性:结果中的元素集是原始数组中元素的子集,在复制过程中保持不变。 下面的代码中的问题是,一旦我们在结果数组中写入内容,Dafny就会以某种方式忘记原来的集合是不变的。 如何解决此问题? 方法copy_neg(a:array) 需要!= null&& b!=空&& a!= b
..
我想在Dafny中编写以下函数,该函数将使用 m2 m1 >,这样 m2 会覆盖 m1 : 函数update_map(m1:map):map 确保 (对于m2中的总k :: k ==> update_map(m1,m2)[k] == m2 [k])&& (forall k ::!(k in m2)&& k in m1
..
我想了解Dafny提出的反例。我以以下代码为例: function update_map(m1:map< ; K,V>,m 2:图):图。 确保 (对于全部k ::在m1中的k ||在m2中的k ==>在update_map(m1,m2)中的k)&& (对于m2中的总k :: k ==> update_map(m1,m2)[k] ==
..
对于井字游戏,我有以下代码段Dafny代码,以检查玩家1在棋盘上是否有获胜行: 谓词isWinRowForPlayer1(board:array2) 读取board 需要board.Length0 == board.Length1 == 3&& isValidBoard(board) { 存在i :: 0 (forall j :
..
我正在着手比较几种在考虑验证的情况下创建的语言(Whiley,Dafny和Frama-C等)。我得到了该函数的示例,该函数将一个数组的区域复制到另一个数组中的另一个位置在目标数组中。我想出的规范在Dafny中看起来像这样: 方法复制(src:array
..