Вопросы по теме 'dafny'
Дафная реализация сортировки вставок
Я новичок в Dafny, и у меня проблемы с проверкой моей реализации InsertSort. Дафни говорит мне, что инварианты мультимножества не выполняются, все остальное работает нормально. После нескольких часов поиска ошибки мне может понадобиться помощь :)...
1927 просмотров
schedule
28.09.2021
Отсортированное постусловие не выполняется
Что я хочу сделать в этом методе, так это просто перезаписать предыдущий массив и заполнить его отсортированными числами, однако dafny говорит, что пост-условие не выполняется, и я не могу понять, почему. Я предполагаю, что мне нужно добавить...
198 просмотров
schedule
15.11.2021
Программа Dafny не может доказать эту реализацию двоичного поиска?
Мы пытаемся написать алгоритм двоичного поиска с использованием Dafny, и кажется, что Dafny не доказывает правильность программы.
может кто-нибудь помочь? Мы получаем следующие ошибки:
На INV: этот инвариант цикла может не поддерживаться...
419 просмотров
schedule
19.09.2021
Индуктивная лемма Дафни: нельзя вывести постусловие индукционной гипотезы
Я пытаюсь определить семантику малых шагов очень простого языка с помощью арифметических выражений (исходный код доступен здесь ). Для простоты мы предполагаем, что язык допускает только литералы и унарный минус ( -exp ).
datatype expression =...
83 просмотров
schedule
24.02.2022
Ошибка массива универсального типа Dafny
При попытке проверить общую очередь FIFO, поддерживаемую массивом, я столкнулся с запутанной ошибкой. Очередь была найдена в этом статья, автором которой является создатель Dafny.
Рассматриваемая ошибка:
если для элементов массива не...
728 просмотров
schedule
25.07.2022
Дафни. Докажите, что все значения из интервала появляются в последовательности
Я пытаюсь доказать следующую лемму. Это кажется очень тривиальным, но я не могу это доказать. Заранее спасибо!
lemma test(x : seq<int>)
// if the values from x are margined by an interval
// the values are different
// and the number...
85 просмотров
schedule
23.07.2022
Вызов Dafny может нарушать условие изменения контекста при использовании фабричного шаблона.
При вызове методов, которые изменяют поля в классе, я получаю сообщение об ошибке, если класс был создан с фабрикой:
class Counter {
var i: int;
constructor() {
i := 0;
}
method Count()
modifies this
{
i...
162 просмотров
schedule
24.07.2022
Изменяет ошибку предложения в измененном объекте
Как я могу заявить (в Dafny) « обеспечивает » гарантию того, что объект, возвращаемый методом, будет «новым», т. е. не будет таким же, как объект, используемый где-либо еще (пока)?
Следующий код показывает минимальный пример:
method...
356 просмотров
schedule
30.07.2022
Дафни и подсчет вхождений
Я смотрел на использование лемм в Дафни, но мне трудно понять, и, очевидно, приведенный ниже пример не подтверждается, вполне возможно, потому, что Дафни не видит индукции или что-то вроде леммы, чтобы доказать какое-то свойство count ? По сути, я...
818 просмотров
schedule
29.08.2022
Для удовлетворения в Дафни
Меня смущает оператор forall Дафни, если оператор внутри forall предназначен для обновления переменной, такой как c.arr[i].d, которая смешивается с доступом к полю и элементу массива. Например, следующий пример не может быть скомпилирован.
Я...
146 просмотров
schedule
05.09.2022
Набор наборов Dafny flatten
Итак, я пытаюсь получить все элементы из набора наборов, но получаю сообщение об ошибке:
«понимание множества должно производить конечное множество, но эвристика Дафни не может понять, как создать ограниченный набор значений для 'x'»
Я думаю,...
183 просмотров
schedule
20.09.2022
Дафни, если утверждение истинно при входе и выходе из цикла, является ли оно инвариантом
В Dafny я экспериментирую с написанием итерационных реализаций рекурсивных спецификаций. Точнее, predicate containsMe<T (==)>(l:seq<T>, me:T) , который возвращает true, когда me является элементом последовательности l .
Недавно...
62 просмотров
schedule
19.09.2022
Нарушение утверждения Dafny-recursiveSum
Я попытался написать рекурсивную функцию суммы в dafny и доказать ее правильность. Я написал:
method Main() {
var a: array<int> := new int[4];
a[0] := 7;
a[1] := -2;
a[2] := 3;
a[3] := -2;
assert a[..] == [7,-2,3,-2];
var s/*, p, c */:=...
1021 просмотров
schedule
10.11.2022
Проверка метода Дафни, который сдвигает область массива
Я использую Dafny для создания метода удаления, при котором вы получаете:
массив символов line
длина массива l
должность at
количество символов для удаления p
Сначала вы удаляете символы строки от at до at + p , а...
1369 просмотров
schedule
22.10.2022
Сбит с толку сообщениями постусловия Dafny
Очень простой код умножения:
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 <...
153 просмотров
schedule
29.10.2022
Дафни собирает четы ниже N
Вот пример, который принимает целое число lim и возвращает последовательность всех целых чисел, строго меньших lim , которые являются четными.
Только обратное направление ... <==> ... во втором инварианте не проверяется. Я пытался...
61 просмотров
schedule
06.02.2023
Dafny — реализация подстроки
Я пытаюсь написать простую проверенную реализацию метода подстроки. Мой метод принимает 2 строки и проверяет, находится ли строка str2 в строке str1. Сначала я пытаюсь выяснить, почему мой инвариант не выполняется - Дафни отмечает, что инвариант...
530 просмотров
schedule
02.05.2023
Буги-странное утверждение (ложное) поведение
Я работаю с Boogie и сталкиваюсь с поведением, которое не понимаю.
Я использовал assert(false) как способ проверить, являются ли предыдущие утверждения assume абсурдными.
Например, в следующем случае программа проверяется без ошибок......
98 просмотров
schedule
19.10.2022
Тривиальные утверждения о множествах, не проверяемых в Dafny
Учебное пособие по Collections содержит следующий код.
method m()
{
assert (set x | x in {0,1,2,3,4,5} && x < 3) == {0,1,2};
}
который, однако, в настоящее время не проверяется в системе Dafny, доступной по адресу rise4fun :...
141 просмотров
schedule
26.02.2023
Перезапись массива в dafny
Я пытаюсь перезаписать массив внутри метода. Компилятор выдает мне ошибку «Ошибка: LHS присваивания должен обозначать изменяемую переменную».
method invalidSort(a : array<int>)
modifies a;
requires a != null;
ensures...
717 просмотров
schedule
01.08.2023