Вопросы по теме 'dafny'
Как я могу побудить Дафни выполнить индукцию последовательности?
Мне интересно, что мне нужно добавить к следующему, чтобы он прошел дафни?
function mapper (input: seq<int>) : seq<(int, int)>
ensures |mapper(input)| == |input|
{
if |input| == 0 then []
else [(0,input[0])] + mapper(input[1..])...
277 просмотров
schedule
04.12.2022
Лучший способ обновить неизменяемую строку в dafny
Я пытаюсь проверить программу, которая применяет шифр Цезаря к строке. Исходная строка должна быть возвращена
method caesar(s:string, index:int)
//apply caesar
Каков наилучший способ обновить значение строки, например:
s[i] := 'x'
474 просмотров
schedule
03.10.2023
Сбит с толку сообщениями постусловия Дафни
Очень простой код умножения:
method Product1 (m: nat, n: nat) returns (res:nat)
ensures res == m * n;
{
var m1: nat := 0;
var n1: nat := 0;
res := 0;
while (m1 < m)
{
n1 := 0;
while (n1 < n)...
23 просмотров
schedule
01.03.2023
Дафни: как использовать оба квантификатора вместе
Я пытаюсь использовать Dafny для проверки очень простого кода. Кулачный блок — обычная версия. И я просто не могу найти способ установить постусловие
"существует для всех j ~~~~~~"
Я не знаю, как использовать 2 квантификатора вместе в Dafny,...
1034 просмотров
schedule
25.12.2022
Дафни: леммы без тел
Я использовал абстрактные леммы и функции (без тел) в задаче моделирования. В этом примере
lemma py(c : int) returns (a: int, b :int)
ensures a*a + b*b == c*c
lemma main(c : int) returns (a: int, b :int)
ensures a*a + b*b == c*c
{
a,...
237 просмотров
schedule
26.02.2023
dafny Как проверить значение члена в другом классе
Я пытаюсь изучить дафни и столкнулся с проблемой, которую не понимаю. Мне нужно проверить, существует ли пользователь в массиве, и я хочу использовать для этого предикат. У меня есть массив пользователей, и у каждого пользователя есть идентификатор....
608 просмотров
schedule
18.09.2023
Как мне написать чистую функцию в Dafny, чтобы получить минимум набора?
Я пытаюсь написать функцию, чтобы получить минимум непустого набора.
Вот что я придумал:
method minimum(s: set<int>) returns (out: int)
requires |s| >= 1
ensures forall t : int :: t in s ==> out <= t
{
var y :| y in s;
if...
248 просмотров
schedule
28.01.2023
Тривиальное нарушение утверждения в Dafny
Почему Дафни утверждает, что это простое утверждение может быть нарушено?
var b := new int[2];
b[0],b[1] := 1, -2;
assert exists k | 0 <= k < b.Length :: (b[k] == 1 || b[k] == -1);
873 просмотров
schedule
07.11.2022
Можно ли в Дафни доказать связь между целым/натуральным делением и действительным делением?
Я хотел бы доказать это:
lemma NatDivision(a: nat, b: nat)
requires b != 0
ensures a / b == (a as real / b as real).Floor
Я не знаю, с чего начать — это кажется почти аксиомой.
Если бы я знал что такое аксиомы, я мог бы работать...
790 просмотров
schedule
26.11.2023
Почему проверка этого примера Дафни не удалась?
Это пример для изучения Дафни.
method test5(x:array<int>,y:array<int>,n:int)
requires 0<=n
requires 0< x.Length
requires 0< y.Length
requires x[0]==y[0];
requires (x[0]>=0 ==> y[0]>=0)
requires (y[0]>= 0 ==>...
136 просмотров
schedule
07.07.2023
Dafny Big-Step- Утверждают нарушение
Я новичок в Дафни. Я пытаюсь дать исполняемую спецификацию семантики больших шагов для CinK в Dafny.
Итак, вот мой код
datatype Id = a | b | c |d |m
//expresions
datatype Exp =
Int(i: int)
| Var(x: Id)
| Bool(b:bool)
| Plus(e1: Exp, e2: Exp)...
113 просмотров
schedule
16.12.2022
Вопрос о дафни для доказательства леммы in seq‹int›
Я только начинаю учиться с Дафни. Теперь у меня есть предикат:
predicate allEqual(s:seq<int>)
//{forall i,j::0<=i<|s| && 0<=j<|s| ==> s[i]==s[j] }
//{forall i,j::0<=i<=j<|s| ==> s[i]==s[j] }
//{forall...
102 просмотров
schedule
08.12.2023
Не уверен, почему эта проверка Дафни не удалась
function method abs(m: int): nat
{ if m>0 then m else -m }
method CalcTerm(m: int, n: nat) returns (res: int)
ensures res == 5*m-3*n;
{
var m1: nat := abs(m);
var n1: nat := n;
res := 0;
while (m1!=0)
invariant m1>=0...
50 просмотров
schedule
04.02.2024
Dafny недостаточно читает предложение для чтения элемента массива
datatype MSG_CMD = Empty| ReqS| ReqE| Inv| InvAck| GntS| GntE
type NODE=nat
type DATA=nat
type boolean=bool
class class_0 {
var
Data : DATA,
Cmd : MSG_CMD
}
class class_1 {
var
Data : DATA,
State : CACHE_STATE
}
class TopC{
var Cache :...
215 просмотров
schedule
06.01.2023
как доказать, что превращение множества в последовательность и обратно тождество в дафни
Привет Относительно новичок в Dafny и определил методы set2Seq и seq2Set для преобразования между наборами и последовательностями. Но только нашел как написать функцию fseq2Set из наборов в последовательности. Не могу найти как определить fseq2Set....
248 просмотров
schedule
15.01.2024
dafny сбой предварительного условия
Я пытаюсь запустить проверенную версию BFS (от здесь )
Мой входной график в полном порядке, но по какой-то причине он не проходит предварительную проверку.
Вот постоянная ссылка
И для полноты вот определение графика + условия достоверности...
48 просмотров
schedule
19.09.2023
могут ли функции dafny возвращать две вещи так же, как и методы?
Although methods can return a pair consisting of two things (e.g. nats). Using a function I can only find how to return a single thing even if that is a pair (of nats). This prevents me from using a single function to define a lexical decreases...
84 просмотров
schedule
26.10.2022
dafny ошибка нарушения утверждения, не знаю, в чем причина
Я новичок в Дафни. Здесь жалуется, что есть ошибка утверждения:
method Fred () returns (result : int) {
var number : int;
result := number * number;
assert result > 0;
}
Я пытаюсь написать утверждение, выражающее следующее...
27 просмотров
schedule
13.07.2022
как написать функцию dafny, которая проверяет, отсортирован ли массив?
Я хочу написать функцию dafny, такую же, как предикат ниже, чтобы я мог вызывать ее из другой функции (в коде). Тем не менее, я не уверен, как бы я это сделал.
predicate sorted(s: seq<char>)
{
forall i,j :: 0 <= i < j < |s|...
164 просмотров
schedule
09.01.2024
изменение возвращаемой переменной в dafny
поэтому у меня есть метод в dafny, который принимает массив a и возвращает отсортированную версию b. В моем коде b := a, а затем выполняется сортировка вставками на месте b. Однако всякий раз, когда я изменяю b, я получаю сообщение об ошибке, что...
50 просмотров
schedule
07.12.2022