Вопросы по теме '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 просмотров

Дафни и подсчет вхождений
Я смотрел на использование лемм в Дафни, но мне трудно понять, и, очевидно, приведенный ниже пример не подтверждается, вполне возможно, потому, что Дафни не видит индукции или что-то вроде леммы, чтобы доказать какое-то свойство count ? По сути, я...
818 просмотров

Для удовлетворения в Дафни
Меня смущает оператор 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