Опубликован: 24.04.2007 | Доступ: свободный | Студентов: 690 / 29 | Оценка: 4.60 / 4.30 | Длительность: 25:56:00
Специальности: Программист
Лекция 6:

Выразимость в арифметике

< Лекция 5 || Лекция 6: 12345 || Лекция 7 >
Аннотация: Рассматриваются арифметические предикаты (формулы, определенные на сигнатуре с арифметическими операциями типа сложения и умножения), вопросы арифметичности произвольных предикатов

Выразимость в арифметике

Рассмотрим сигнатуру, имеющую два двуместных функциональных символа — сложение и умножение (как обычно, мы будем писать x+y вместо +(x,y) и т. д.) и двуместный предикатный символ равенства. Рассмотрим интерпретацию этой сигнатуры, носителем которой является множество \mathbb{N} натуральных чисел, а сложение, умножение и равенство интерпретируются стандартным образом.

Выразимые с помощью формул этой сигнатуры предикаты называются арифметическими и играют в математической логике важную роль. Соответствующие множества также называются арифметическими. О них подробно рассказано в другой нашей книжке [5]; оказывается, что почти всякое множество, которое можно описать словами, является арифметическим.

58. Докажите, что существует множество натуральных чисел, не являющееся арифметическим. (Указание: семейство всех подмножеств множества \mathbb{N} несчетно, а арифметических множеств счетное число.)

Для начала мы установим арифметичность довольно простых предикатов.

  • Предикат x\le y является арифметическим. В самом деле, его можно записать как \exists z\, (x+z=y).
  • Предикаты x=0 и x=1 являются арифметическими. В самом деле, x=0 тогда и только тогда, когда x\le y для любого y (а также когда x+x=x ). А x=1 тогда и только тогда, когда x представляет собой наименьшее число, отличное от нуля. (Можно также воспользоваться тем, что y\cdot 1=y при любом y.)
  • Вообще для любого фиксированного числа c предикат {x=c} является арифметическим. (Например, можно написать сумму из большого числа единиц.)
  • Полезно такое общее наблюдение: если мы уже установили, что какой-то предикат является арифметическим, то в дальнейшей его можно использовать в формулах, как если бы он входил в сигнатуру, поскольку его всегда можно заменить на выражающую его формулу.
  • Предикат x|y (число x является делителем числа y ), очевидно, арифметичен (формула \exists z\, (xz=y) ).
  • Предикат " x — простое число" арифметичен. В самом деле, число просто, если оно отлично от 1 и любой его делитель равен 1 или самому числу. Это сразу же записывается в виде формулы.
  • Операции частного и остатка арифметичны (в том смысле, что трехместные предикаты " q есть частное при делении a на b " и " r есть остаток при делении a на b " арифметичны. Например, первый из них записывается формулой \exists r\, ((a=bq+r)\land (r<b)) (как мы уже говорили, использование арифметического предиката (r<b) не создает проблем).
  • Этот список можно продолжать: для многих предикатов их определение по существу уже является нужной формулой. Например, свойства "быть наибольшим общим делителем", "быть наименьшим общим кратным", "быть взаимно простыми" все относятся к этой категории.
  • Предикат "быть степенью двойки" является арифметическим (хотя это и не столь очевидно, как в предыдущих примерах). В самом деле, это свойство можно переформулировать так: любой делитель либо равен единице, либо четен.

Последнее из наших рассуждений годится для степеней тройки и вообще для степеней любого простого числа. Однако, скажем, для степеней шестерки оно не проходит, и, пожалуй, мы подошли к границе, где без некоторого общего метода не обойтись.

Два наиболее известных способа доказывать арифметичность основаны на возможности "кодирования" конечных множеств и последовательностей. Один восходит к Геделю (так называемая \beta -функция Геделя), второй изложен в книге "Теория формальных систем" [24]. Ее написал Р.Смаллиан, известный также как автор популярных сборников "логических задач" и анекдотов. (Один из таких сборников имеет парадоксальное название "Как же называется эта книга?" [23].)

В некоторых отношениях метод Геделя предпочтительней, и мы рассказываем о нем в книжке о вычислимых функциях [5], но сейчас для разнообразия рассмотрим другой способ. Зафиксируем взаимно однозначное соответствие между натуральными числами и двоичными словами:

\begin{array}{cccccccccc}
0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8&\dots \\
\Lambda& 0 & 1 & 00 & 01 & 10 & 11 & 000 & 001
&\ldots
\end{array}
Это соответствие задается так: чтобы получить слово, соответствующее числу n, надо записать n+1 в двоичной системе и удалить первую единицу. Например, нулю соответствует пустое слово \Lambda, числу 15слово 0000 и т. д. Теперь можно говорить об арифметичности предикатов, определенных на двоичных словах, имея в виду арифметичность соответствующих предикатов на \mathbb{N}.

  • Предикат "слово x состоит из одних нулей" арифметичен. В самом деле, при переходе к числам ему соответствует предикат " x+1 есть степень двойки", который (как мы видели) арифметичен.
  • Предикат "слова x и y имеют одинаковую длину" арифметичен. В самом деле, это означает, что найдется степень двойки c, для которой c-1\hm\le x,y\hm<2c-1 (именно такой промежуток заполняют числа, которым соответствуют слова одной длины).
  • Предикат "слово z является конкатенацией слов x и y " (проще говоря, z получается приписыванием y справа к слову x ) арифметичен. В самом деле, его можно выразить так: найдется слово y' из одних нулей, имеющее ту же длину, что и слово y, при этом (z+1)\hm=(x+1)(y'+1)+(y-y') (умножение на y'+1 соответствует дописыванию нулей, а добавление y-y' заменяет нули на буквы слова y ).
  • Предикат "слово x является началом слова y " арифметичен. В самом деле, это означает, что существует слово t, при котором y есть конкатенация x и t.
  • То же самое верно для предикатов " x есть конец слова y ", " x есть подслово слова y " (последнее означает, что найдутся слова u и v, для которых y есть конкатенация u, x и v ; конкатенация трех слов выразима через конкатенацию двух).
  • Существует арифметический трехместный предикат S(x,a,b) с такими свойствами: (а) для любых a и b множество S_{ab}=\{x\mid S(x,a,b)\} конечно; (б) среди множеств S_{ab} при различных парах a,b встречаются все конечные множества. Например, в качестве такого предиката можно взять " axa есть подслово слова b " (здесь axa есть конкатенация трех слов: a, x и снова a ).

    В самом деле, ясно, что слово x не длиннее слова b, и потому множество S_{ab} всегда конечно. С другой стороны, пусть имеется некоторое конечное множество слов x_1,\dots, x_n. Положим a=100\dots001, где число нулей больше длины любого из слов x_i, и b\hm=ax_1ax_2a\dots ax_na.

Последнее утверждение не упоминает явно о словах, и больше они нам не понадобятся: достаточно знать, что конечные множества натуральных чисел можно кодировать парами натуральных чисел в описанном смысле.

Теперь мы можем выразить, что число x является степенью числа 4, следующим образом: существует конечное множество U, которое содержит число x и обладает таким свойством: всякий элемент u\in U либо равен 1, либо делится на 4 и u/4 также принадлежит U. Теперь надо везде заменить множество U на его код u_1,u_2, а утверждение x\in U на S(x,u_1,u_2), где S — построенный нами кодирующий предикат.

Немного сложнее выразить двуместный предикат x\hm=4^k. Здесь нам хотелось бы сказать так: существует последовательность x_0,x_1,\dots,x_k, для которой x_0=1, каждый следующий член вчетверо больше предыдущего ( x_{i+1}\hm=4x_i ) и x_k\hm=
x. Как научиться говорить о последовательностях, если мы умеем говорить о множествах? Вспомним, что в терминах теории множеств последовательность есть функция, определенная на начальном отрезке натурального ряда, то есть конечное множество пар \{\langle 0,x_0\rangle, \langle 1, x_1\rangle,\dots, \langle k,
x_k\rangle\}. Пары можно кодировать числами. Например, можно считать кодом пары \langle x,y\rangle число c\hm=(x+y)^2+x, поскольку по нему арифметически восстанавливается x+y (как наибольшее число, квадрат которого не превосходит c ), а затем x и y. Теперь конечное множество пар можно заменить конечным множеством их кодов, которое в свою очередь можно закодировать парой чисел.

59. Проведите это рассуждение подробно.

60. Покажите, что двуместный предикат " x есть n -ое по порядку простое число" арифметичен.

< Лекция 5 || Лекция 6: 12345 || Лекция 7 >
Юрий Тарасов
Юрий Тарасов
Россия, Мегион, средняя школа №1, 1993
Олег Корсак
Олег Корсак
Латвия, Рига