达夫尼。无法确定 LHS 的存在...对于序列
Dafny. Cannot establish the existence of LHS ... for sequences
对于下面的代码,我得到它无法确定满足 such-that 谓词的 LHS 值的存在。我怎样才能证明右边成立并且这样的 x 存在?
method Main() {
var n : int := 10;
var x : seq<int> :| n == |x| && forall i :: 0 <= i < |x| ==> -1 <= x[i] <= 1;
}
你需要提供一个证人。以下断言可以解决问题:
method Main() {
var n : int := 10;
assert |[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]| == 10;
var x : seq<int> :| n == |x| && forall i :: 0 <= i < |x| ==> -1 <= x[i] <= 1;
}
但是,这将带您进入下一点,即
现在好像连这种小事都不支持了:
method Main() {
var n : int := 10;
var y : seq<int> :| y == [3];
var x : seq<int> :| x == y;
var z : seq<int> :| |z| == |y|;
}
Dafny 设法实例化了 x
,但没有实例化 z
。
也许 post 在他们的 GitHub/Issues?
对于下面的代码,我得到它无法确定满足 such-that 谓词的 LHS 值的存在。我怎样才能证明右边成立并且这样的 x 存在?
method Main() {
var n : int := 10;
var x : seq<int> :| n == |x| && forall i :: 0 <= i < |x| ==> -1 <= x[i] <= 1;
}
你需要提供一个证人。以下断言可以解决问题:
method Main() {
var n : int := 10;
assert |[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]| == 10;
var x : seq<int> :| n == |x| && forall i :: 0 <= i < |x| ==> -1 <= x[i] <= 1;
}
但是,这将带您进入下一点,即
现在好像连这种小事都不支持了:
method Main() {
var n : int := 10;
var y : seq<int> :| y == [3];
var x : seq<int> :| x == y;
var z : seq<int> :| |z| == |y|;
}
Dafny 设法实例化了 x
,但没有实例化 z
。
也许 post 在他们的 GitHub/Issues?