Россия, Новосибирск |
Выразимость в арифметике
Выразимость в арифметике
Рассмотрим сигнатуру, имеющую два двуместных функциональных
символа — сложение и умножение (как обычно, мы будем писать вместо
и т. д.) и двуместный предикатный
символ равенства. Рассмотрим интерпретацию этой сигнатуры, носителем
которой является множество
натуральных чисел, а сложение,
умножение и равенство интерпретируются стандартным образом.
Выразимые с помощью формул этой сигнатуры предикаты называются арифметическими и играют в математической логике важную роль. Соответствующие множества также называются арифметическими. О них подробно рассказано в другой нашей книжке [5]; оказывается, что почти всякое множество, которое можно описать словами, является арифметическим.
58. Докажите, что существует множество натуральных чисел, не
являющееся арифметическим. (Указание: семейство всех подмножеств
множества несчетно, а арифметических множеств
счетное число.)
Для начала мы установим арифметичность довольно простых предикатов.
- Предикат
является арифметическим. В самом деле, его можно записать как
.
- Предикаты
и
являются арифметическими. В самом деле,
тогда и только тогда, когда
для любого
(а также когда
). А
тогда и только тогда, когда
представляет собой наименьшее число, отличное от нуля. (Можно также воспользоваться тем, что
при любом
.)
- Вообще для любого фиксированного числа
предикат
является арифметическим. (Например, можно написать сумму из большого числа единиц.)
- Полезно такое общее наблюдение: если мы уже установили, что какой-то предикат является арифметическим, то в дальнейшей его можно использовать в формулах, как если бы он входил в сигнатуру, поскольку его всегда можно заменить на выражающую его формулу.
- Предикат
(число
является делителем числа
), очевидно, арифметичен (формула
).
- Предикат "
— простое число" арифметичен. В самом деле, число просто, если оно отлично от
и любой его делитель равен
или самому числу. Это сразу же записывается в виде формулы.
- Операции частного и остатка арифметичны (в том смысле, что
трехместные предикаты "
есть частное при делении
на
" и "
есть остаток при делении
на
" арифметичны. Например, первый из них записывается формулой
(как мы уже говорили, использование арифметического предиката
не создает проблем).
- Этот список можно продолжать: для многих предикатов их определение по существу уже является нужной формулой. Например, свойства "быть наибольшим общим делителем", "быть наименьшим общим кратным", "быть взаимно простыми" все относятся к этой категории.
- Предикат "быть степенью двойки" является арифметическим (хотя это и не столь очевидно, как в предыдущих примерах). В самом деле, это свойство можно переформулировать так: любой делитель либо равен единице, либо четен.
Последнее из наших рассуждений годится для степеней тройки и вообще для степеней любого простого числа. Однако, скажем, для степеней шестерки оно не проходит, и, пожалуй, мы подошли к границе, где без некоторого общего метода не обойтись.
Два наиболее известных способа доказывать арифметичность
основаны на возможности "кодирования" конечных
множеств и последовательностей. Один восходит к Геделю
(так называемая -функция Геделя),
второй изложен в книге "Теория формальных систем"
[24]. Ее
написал Р.Смаллиан, известный также как автор популярных
сборников "логических задач" и анекдотов. (Один из таких
сборников имеет парадоксальное название "Как же называется
эта книга?" [23].)
В некоторых отношениях метод Геделя предпочтительней, и мы рассказываем о нем в книжке о вычислимых функциях [5], но сейчас для разнообразия рассмотрим другой способ. Зафиксируем взаимно однозначное соответствие между натуральными числами и двоичными словами:







- Предикат "слово
состоит из одних нулей" арифметичен. В самом деле, при переходе к числам ему соответствует предикат "
есть степень двойки", который (как мы видели) арифметичен.
- Предикат "слова
и
имеют одинаковую длину" арифметичен. В самом деле, это означает, что найдется степень двойки
, для которой
(именно такой промежуток заполняют числа, которым соответствуют слова одной длины).
- Предикат "слово
является конкатенацией слов
и
" (проще говоря,
получается приписыванием
справа к слову
) арифметичен. В самом деле, его можно выразить так: найдется слово
из одних нулей, имеющее ту же длину, что и слово
, при этом
(умножение на
соответствует дописыванию нулей, а добавление
заменяет нули на буквы слова
).
- Предикат "слово
является началом слова
" арифметичен. В самом деле, это означает, что существует слово
, при котором
есть конкатенация
и
.
- То же самое верно для предикатов "
есть конец слова
", "
есть подслово слова
" (последнее означает, что найдутся слова
и
, для которых
есть конкатенация
,
и
; конкатенация трех слов выразима через конкатенацию двух).
-
Существует арифметический трехместный предикат
с такими свойствами: (а) для любых
и
множество
конечно; (б) среди множеств
при различных парах
встречаются все конечные множества. Например, в качестве такого предиката можно взять "
есть подслово слова
" (здесь
есть конкатенация трех слов:
,
и снова
).
В самом деле, ясно, что слово
не длиннее слова
, и потому множество
всегда конечно. С другой стороны, пусть имеется некоторое конечное множество слов
. Положим
, где число нулей больше длины любого из слов
, и
.
Последнее утверждение не упоминает явно о словах, и больше они нам не понадобятся: достаточно знать, что конечные множества натуральных чисел можно кодировать парами натуральных чисел в описанном смысле.
Теперь мы можем выразить, что число является степенью числа
, следующим образом: существует конечное множество
, которое содержит число
и обладает таким свойством: всякий
элемент
либо равен
, либо делится на
и
также принадлежит
. Теперь надо везде заменить множество
на его код
, а утверждение
на
, где
— построенный нами кодирующий предикат.
Немного сложнее выразить двуместный предикат . Здесь
нам хотелось бы сказать так: существует последовательность
, для которой
, каждый
следующий член вчетверо больше предыдущего (
) и
. Как научиться говорить о последовательностях, если мы умеем
говорить о множествах? Вспомним, что в терминах теории множеств
последовательность есть функция, определенная на начальном
отрезке натурального ряда, то есть конечное множество пар
. Пары можно кодировать числами. Например, можно
считать кодом пары
число
, поскольку по нему арифметически
восстанавливается
(как наибольшее число, квадрат которого
не превосходит
), а затем
и
.
Теперь конечное множество пар можно заменить конечным множеством их кодов,
которое в свою очередь можно закодировать парой чисел.
59. Проведите это рассуждение подробно.
60. Покажите, что двуместный предикат " есть
-ое
по порядку простое число" арифметичен.