Задача 1. Дана блок-схема над 1 входной переменной, 1 промежуточной переменной и 1 выходной переменной. Домены всех переменных — множество всех целых чисел. Сигнатура \(mc91\) имеет домены аргументов и результатов — множества всех целых чисел. При помощи методов Флойда докажите полную корректность этой блок-схемы относительно спецификации \(\varphi(x) \equiv T\), \(\psi(x, z) \equiv (x \geq 101 \Rightarrow z = x — 10) \land (x < 101 \Rightarrow z = 91)\), если сигнатуре \(mc91\) сопоставлена данная блок-схема.
Решение (теорию со всем необходимым, а также сессию доказательства) присылайте на почту до 23:59 22 марта. Требования к оформлению решения те же, что и в прошлой домашней работе.
На семинаре 14 марта будет проведена контрольная работа по методам Флойда. Длительность контрольной — 1,5 часа. За это время нужно будет доказать полную корректность блок-схемы (без операторов CALL) относительно спецификации при помощи методов Флойда. Можно пользоваться любыми письменными материалами и книгами. Нельзя пользоваться электронными устройствами. Перед семинаром состоится лекция о верификации рекурсивных блок-схем.
Задача 1. Дана блок-схема над 2 входными переменными, 2 промежуточными переменными и 1 выходной переменной (алгоритм Евклида). Домены всех переменных — целочисленные. При помощи методов Флойда докажите полную корректность этой блок-схемы относительно спецификации \(\varphi(x_1,~x_2) \equiv x_1 > 0 \land x_2 > 0\), \(\psi(x_1, x_2, z_1) \equiv (z_1 = gcd(x_1, x_2))\). Функциональному символу \(gcd\) сопоставлена функция, вычисляющая наибольший общий делитель двух чисел. Это определяется в этой теории Why3.
Решение (теорию с индуктивными утверждениями, оценочными функциями, условиями (в виде целей) и комментариями, а также сессию доказательства) присылайте на почту до 23:59 15 марта. Требования к оформлению решения те же, что и в прошлой домашней работе. В вашей теории нужно импортировать теорию gcd по ссылке выше. Солверы сами смогут использовать аксиомы, определяющие символ gcd, из этой теории.
Задача 1. Дана блок-схема над 2 входными переменными, 2 промежуточными переменными и 1 выходной переменной. Домены всех переменных — целочисленные. При помощи метода индуктивных утверждений докажите частичную корректность этой блок-схемы относительно спецификации \(\varphi(x_1,~x_2) \equiv T\), \(\psi(x_1,~x_2,~z_1) \equiv (z_1 = x_1 * x_2)\).
Решение присылайте на почту до 23:59 10 марта. В вашем письме должен быть архив, в котором расположен файл с целями на языке Why3 и директория с сессией, в которой все цели доказаны. Ниже дано пояснение, что это такое, и требования к оформлению решения.
Для доказательства полной корректности (завершимости) блок-схемы без циклов необходимо выписать следующие два условия завершимости для каждого оператора CALL (с доменом \(D_{res}\), функциями \(f_{arg}\) и \(f_{res}\) и спецификацией \((\varphi_s,~\psi_s)\)) и для каждого пути \(\alpha\) от псевдосвязки START в связку, входящую в этот оператор (на пути имеется ровно \(N\) операторов CALL):
Задача 1. Написать блок-схему, которая является обще полностью корректной относительно спецификации \((\varphi,~\psi)\) при заданной \(\gamma\), и доказать это. Блок-схема имеет три входные переменные \(x_1, x_2, x_3\) и одну выходную переменную \(z_1\). Домен переменных \(x_1\) и \(z_1\) обозначим как \(M\), домен переменных \(x_2\) и \(x_3\) обозначим как \(A\). Элементы множества \(M\) можно сравнивать на равенство, то же справедливо для множества \(A\). Других операций для этих множеств не определено.
Обратите внимание на то, что в спецификациях используются функциональные и предикатные символы и наборы аксиом. Это означает, что эти символы нельзя использовать для определения вычисления и, поэтому, нельзя использовать в качестве функций, приписанных операторам блок-схемы.
Функциональные и предикатные символы: \(select: M \times A \rightarrow V\) \(store: M \times A \times V \rightarrow M\) \(valid: M \times A \rightarrow \{T, F\}\)
Элементы множества \(V\) можно сравнивать на равенство, других операций для этого множества не определено.
Аксиомы над указанными символами: \(Ax1: \forall m \in M, a \in A, v \in V \cdot valid(m, a) \Rightarrow select(store(m, a, v), a) = v\) \(Ax2: \forall m \in M, a, b \in A, v \in V \cdot valid(m, a) \land valid(m, b) \land a \neq b \\ \Rightarrow select(store(m, a, v), b) = select(m, b)\) \(Ax3: \forall m \in M, a, b \in A, v \in V \cdot valid(m, a) \land valid(m, b) \\ \Rightarrow valid(store(m, a, v), b)\)
Задача 1. Для блок-схемы с семинара определить множество всех \(\gamma\) («гамма»), при которых эта блок-схема будет обще частично корректна относительно спецификации \(\varphi(x)~\equiv~T,~\psi(x, z)~\equiv~F\). Определить множество всех \(\gamma\), при которых эта блок-схема будет обще полностью корректна относительно той же спецификации.
Задача 2. Пусть есть некоторые целочисленные константы \(MIN\) и \(MAX\) такие, что \(MIN<0<MAX~\land~MIN+MAX~=~-1\). Написать блок-схему над 3 входными переменными \(x_1,~x_2,~x_3\) и 1 выходной переменной \(z_1\) (промежуточные переменные выбрать самостоятельно). Домены всех переменных — множество всех целых чисел. Блок-схема должна быть обще полностью корректна относительно спецификации \((\varphi,~\psi)\) при указанной ниже \(\gamma\). В блок-схеме можно использовать лишь следующие функции: константные (в том числе, \(MIN\) и \(MAX\)), равные одному из своих аргументов, арифметические сравнения двух целых чисел. В блок-схеме можно использовать указанные ниже сигнатуры.
\(\gamma(ADD)~=~(\varphi_{ADD},~\psi_{ADD})\) \(\varphi_{ADD}(a,~b)~\equiv~MIN\leq a \leq MAX~\land~MIN\leq b \leq MAX~\land~MIN\leq a + b \leq MAX\) \(\psi_{ADD}(a,~b,~c)~\equiv~(c~=~a + b)\) \(\varphi_{SUB}(a,~b)~\equiv~MIN\leq a \leq MAX~\land~MIN\leq b \leq MAX~\land~MIN\leq a — b \leq MAX\) \(\psi_{SUB}(a,~b,~c)~\equiv~(c~=~a — b)\)
14 июня состоится экзамен. Он пройдет в аудитории 706 и начнется в 9:00. Экзамен длится 120 минут. За это время можно доказать полную корректность блок-схемы при помощи методов Флойда (10 баллов) и написать спецификацию типа данных и Си-функций при помощи языка ACSL (15 баллов). Можно пользоваться любыми письменными и напечатанными материалами. Нельзя пользоваться электронной техникой.