Опубликован: 27.09.2006 | Уровень: для всех | Доступ: свободно | ВУЗ: Московский государственный индустриальный университет
Дополнительный материал 1:

Все задачи курса

< Лекция 13 || Дополнительный материал 1: 1234567

Задачи на предикаты

Задача 7.24. Докажите, что выражение ((a\land b) = (b\lor a)) является предикатом.

Задача 7.25. Докажите, что выражение a\lor a — не предикат.

Задача 7.26. Докажите, что выражение ((e_1\land (e_2\lor e_3)) =
((e_1\land e_2)\lor (e_1\land e_3))) является предикатом.

Задача 7.27. Докажите, что выражение ((e_1\land (e_2\land e_3)) =
((e_1\land e_2)\land e_3)) является предикатом.

Задача 7.28. Докажите, что выражение ((a\lor a) — не предикат.

Задача 7.29. Докажите, что выражение ((a\Rightarrow b)) — не предикат.

Задача 7.30. Изобразите деревья вывода для каждого из законов эквивалентности (см. "Основы языка Java" .

Задача 7.31. Вычислите значения предикатов P_1 = (x=0\  \land\  x/(y-2)=0) и P_2 = (x=0 \ \lands \ x/(y-2)=0) в состоянии s = \{(x, 7), (y, 2)\}.

Задача 7.32. Вычислите значения предиката P = (\exists i \ 0 \leqslant i \leqslant 9 
\ (i^2 \leqslant 0)) \land (\forall j \ j^2 \geqslant k) в состоянии s = \{(k, 0)\}.

Задача 7.33. Вычислите значения предиката P = (!(x>y \Rightarrow b)\land (b \Rightarrow x > y) ) \lor ! (x>y
\Rightarrow b ) в состоянии s = \{(x,3), (y,2), (b,F)\}.

Задача 7.34. Вычислите значения предиката P = (b \Rightarrow (x>y)) \land( (b \Rightarrow (x>y)) || (!(x>y)
\Rightarrow ! b)) в состоянии s = \{(x,2), (y,3), (b,T)\}.

Задача 7.35. Покажите, что все законы эквивалентности (см. "Основы языка Java" ) являются тавтологиями.

Задача 7.36. Запишите предикат, утверждающий, что если i<j, а m>n, то u=v.

Задача 7.37. Запишите предикат, утверждающий, что самое большее одно из следующих утверждений истинно: a<b, b<c.

Задача 7.38. Запишите предикат, утверждающий, что ни одно из следующих утверждений не является истинным: a<b, b<c и x=y.

Задача 7.39. Запишите предикат, утверждающий, что следующие утверждения не являются истинными одновременно: a<b, b<c и x=y.

Задача 7.40. Запишите предикат, утверждающий следующее: когда x<y, y<z означает, что v=w, но если x\geqslant y, то y<z не может выполняться; однако если v=w, то x<y.

Задача 7.41. Запишите предикат, утверждающий, что для массива b[0..n-1] длины n>0 все элементы вырезки b[j..k] являются нулевыми.

Задача 7.42. Запишите предикат, утверждающий, что для массива b[0..n-1] длины n>0 ни один из элементов вырезки b[j..k] не нулевой.

Задача 7.43. Запишите предикат, утверждающий, что для массива b[0..n-1] длины n>0 некоторые из элементов вырезки b[j..k] нулевые.

Задача 7.44. Запишите предикат, утверждающий, что для массива b[0..n-1] длины n>0 все нули массива находятся в вырезке b[j..k].

Задача 7.45. Запишите предикат, утверждающий, что для массива b[0..n-1] длины n>0 некоторые нули массива находятся в вырезке b[j..k].

Задача 7.46. Запишите предикат, утверждающий, что для массива b[0..n-1] длины n>0 справедливо высказывание: неверно, что все нули массива находятся в вырезке b[j..k].

Задача 7.47. Запишите предикат, утверждающий, что для массива b[0..n-1] длины n>0 справедливо высказывание: неверно, что не все нули массива находятся в вырезке b[j..k].

Задача 7.48. Запишите предикат, утверждающий, что для массива b[0..n-1] длины n>0 справедливо высказывание: если в b[0..n-1] есть нуль, то он есть и в вырезке b[j..k].

Задача 7.49. Запишите предикат, утверждающий, что для массива b[0..n-1] длины n>0 справедливо высказывание: если в вырезке b[j..k] есть два нуля, то j=1.

Задача 7.50. Запишите предикат, утверждающий, что для массива b[0..n-1] длины n>0 справедливо высказывание: элементы в вырезке b[j..k] расположены в возрастающем порядке.

Задача 7.51. Запишите предикат, утверждающий, что для массива b[0..n-1] длины n>0 справедливо высказывание: j является степенью двойки, если j встречается в вырезке b[j..k].

Задача 7.52. Запишите предикат, утверждающий, что для массива b[0..n-1] длины n>0 справедливо высказывание: если b[1], b[2] и b[3] есть соответственно 3, 4 и 5, то j=3.

Задача 7.53. Запишите предикат, который утверждает, что функция f\colon \{1, 2, 3, 4, 5\}
\rightarrow \{1, 2, 3, 4, 5\} является сюръективной и отрицание этого факта. Упростите получившиеся предикаты, если это возможно.

Задача 7.54. Запишите предикат, который утверждает, что функция f\colon \{1, 2, 3, 4, 5\}
\rightarrow \{1, 2, 3, 4, 5\} является инъективной и отрицание этого факта. Упростите получившиеся предикаты, если это возможно.

Задача 7.55. Запишите предикат, который утверждает, что функция f\colon \{1, 2, 3, 4, 5\}
\rightarrow \{1, 2, 3, 4, 5\} является биективной и отрицание этого факта. Упростите получившиеся предикаты, если это возможно.

Задача 7.56. Запишите предикат, который утверждает, что функция f\colon \{1, 2, 3, 4, 5\}
\rightarrow \{1, 2, 3, 4, 5\} все элементы, не превосходящие трех, не увеличивает, и отрицание этого факта. Упростите получившиеся предикаты, если это возможно.

Задача 7.57. Запишите предикат, который утверждает, что функция f\colon \{1, 2, 3, 4, 5\}
\rightarrow \{1, 2, 3, 4, 5\} все существует единственный элемент x \in \{1, 2, 3, 4, 5\}, который функция f уменьшает, и отрицание этого факта. Не используйте при этом квантора \exists!.

Задача 7.58. Основываясь на определении 6.4 и спецификации программы 6.1, докажите истинность эквивалентности \{Q\}\; S\; \{R\} = (Q \Rightarrow  wp(S,R)).

Задача 7.59. Основываясь на определении 6.4, докажите закон монотонности (Q \Rightarrow R) \Rightarrow (wp(S,Q) \Rightarrow wp(S,R)).

Задача 7.60. Основываясь на определении 6.4, докажите закон дистрибутивности дизъюнкции wp(S,Q) \lor wp(S,R) = wp(S, Q \lor R) .

Задача 7.61. Вычислите и упростите wp("i=i+2; j=j-2;", i+j=0).

Задача 7.62. Вычислите и упростите wp("i=i+1; j=j-1;", i\cdot j=0).

Задача 7.63. Вычислите и упростите wp("x=x+y;", x < 2y).

Задача 7.64. Вычислите и упростите wp("x=(x+y)*(x-y);", x+y^2 \ne 0).

Задача 7.65. Вычислите и упростите wp("i=i+1; j=j+1;", i=j).

Задача 7.66. Вычислите и упростите wp("x=a/b;", x^2 \geqslant 0).

Задача 7.67. Вычислите и упростите wp("i=1; s=b[0];",
1 \leqslant i < n \ \land \ s = b[0]+\ldots+b[i-1] ).

Задача 7.68. Вычислите и упростите wp("a=0; n=1;", a^2 < n \ \land \ (a + 1)^2 \geqslant n).

Задача 7.69. Вычислите и упростите wp("s=s+b[i]; i=i+1;", 0<i<n\ \land\ s=b[0]+\ldots+b[i-1]).

Задача 7.70. Вычислите и упростите wp("if(true);", R) для произвольного предиката R.

Задача 7.71. Вычислите и упростите следующее слабейшее предусловие wp("if (a > b) a=a-b; else b=b-a;",a>0 \ \land \ b > 0).

Задача 7.72. Найдите такое значение выражения x, включающее другие переменные, для которого спецификация \{Q\} \; S \; \{R\} становится тавтологией: \{T\} \; "a=a+1; b=x;" \; \{b=a+1\}.

Задача 7.73. Найдите такое значение выражения x, включающее другие переменные, для которого спецификация \{Q\} \; S \; \{R\} становится тавтологией: \{T\} \; "b=x; a=a+1;" \; \{b=a+1\}.

Задача 7.74. Найдите такое значение выражения x, включающее другие переменные, для которого спецификация \{Q\} \; S \; \{R\} становится тавтологией: \{i=j\} \; "i=i+1; j=x;" \; \{i=j\}.

Задача 7.75. Найдите такое значение выражения x, включающее другие переменные, для которого спецификация \{Q\} \; S \; \{R\} становится тавтологией: \{i=j\} \; "j=x; i=i+1;" \; \{i=j\}.

Задача 7.76. Задача о банке с кофейными зернами. В банке имеется несколько черных и белых кофейных зерен. Следующий процесс надо повторять, пока это возможно:

  • случайно выберите из банки два зерна и
  • если они одного цвета, отбросьте их, но положите в банку другое черное зерно (имеется достаточный запас черных зерен, чтобы делать это);
  • если они разного цвета, поместите белое зерно обратно в банку и отбросьте черное зерно.

Выполнение этого процесса уменьшает количество зерен в банке на единицу. Повторение процесса должно прекратиться, когда в банке останется всего одно зерно, так как тогда нельзя уже выбрать два зерна. Можно ли что-то сказать о цвете оставшегося зерна, если известно, сколько вначале в банке было черных и белых зерен?

Задача 7.77. Замыкание кривой. Двое играют на листе клетчатой бумаги произвольной формы и размера в следующую игру. Игроки делают ходы поочередно и начинает игрок A. Ход игрока A состоит в том, что он соединяет горизонтальным или вертикальным отрезком два соседних узла решетки, проводя непрерывную линию по границе одного из квадратиков (клеточек) бумаги. Ход игрока B сводится к проведению пунктирной линии, обладающей теми же свойствами. Проводить линию по уже нарисованной противником нельзя.

Игрок A выигрывает, если ему удается получить полностью замкнутую кривую, состоящую из непрерывных линий. Если игрок A не сумеет получить замкнутую кривую, то считается, что победил игрок B. Существует ли стратегия, гарантирующая выигрыш на произвольной доске для одного из игроков?

< Лекция 13 || Дополнительный материал 1: 1234567
Анастасия Халудорова
Анастасия Халудорова
екатерина яковлева
екатерина яковлева