При написании программы, определяющей первое вхождение заданного целого числа x в заданный массив b[0..m-1] целых чисел (m>0), если известно, что x находится в массиве b, в качестве ограничивающей функции можно попробовать взять:
В данном случае:wp("System.exit(0);",R)=F при каком начальном состоянии после его выполнения предикат R будет истинным:
Спецификацией {Q} S {R} программы S, где Q и R — предикаты, называется предикат, означающий, что если выполнение S началось в состоянии, удовлетворяющем Q, то имеется гарантия, что оно завершится через конечное время:
В данном случае:{Q} S {R} предикат R называется
В данном случае:{Q} S {R} предикат Q называется:
Если предусловие Q имеет вид T, то в этом случае инвариант можно строить только исходя из:
В данном случае:wp("System.exit(0);",R)=F выполнение вызова метода "System.exit(0)" приводит:
Если при доказательстве теоремы о критерии индуктивности найдутся две различные цепочки a и b такие, что f(a) = f(b), то можно гарантировать, что:
Предикат, описывающий максимально сильные ограничения на состояние переменных программы S, которые могут быть получены при данном предусловии Q:
Теорема критерия индуктивности утверждает, что f индуктивна тогда и только тогда, когда из равенства значений f на последовательностях a и b следует равенство значений f: