Языки и исчисления

       

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


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

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

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

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

  • Предикат является арифметическим. В самом деле, его можно записать как .
  • Предикаты и являются арифметическими. В самом деле, тогда и только тогда, когда для любого (а также когда ). А тогда и только тогда, когда представляет собой наименьшее число, отличное от нуля. (Можно также воспользоваться тем, что при любом .)
  • Вообще для любого фиксированного числа предикат является арифметическим. (Например, можно написать сумму из большого числа единиц.)
  • Полезно такое общее наблюдение: если мы уже установили, что какой-то предикат является арифметическим, то в дальнейшей его можно использовать в формулах, как если бы он входил в сигнатуру, поскольку его всегда можно заменить на выражающую его формулу.
  • Предикат (число является делителем числа ), очевидно, арифметичен (формула ).
  • Предикат " — простое число" арифметичен. В самом деле, число просто, если оно отлично от и любой его делитель равен или самому числу. Это сразу же записывается в виде формулы.
  • Операции частного и остатка арифметичны (в том смысле, что трехместные предикаты " есть частное при делении на " и " есть остаток при делении на " арифметичны.
    Например, первый из них записывается формулой

    ( как мы уже говорили, использование арифметического предиката не создает проблем).
  • Этот список можно продолжать: для многих предикатов их определение по существу уже является нужной формулой. Например, свойства "быть наибольшим общим делителем", "быть наименьшим общим кратным", "быть взаимно простыми" все относятся к этой категории.
  • Предикат "быть степенью двойки" является арифметическим (хотя это и не столь очевидно, как в предыдущих примерах). В самом деле, это свойство можно переформулировать так: любой делитель либо равен единице, либо четен.


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

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

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

  • Предикат "слово состоит из одних нулей" арифметичен.


    В самом деле, при переходе к числам ему соответствует предикат " есть степень двойки", который (как мы видели) арифметичен.
  • Предикат "слова и имеют одинаковую длину" арифметичен. В самом деле, это означает, что найдется степень двойки , для которой (именно такой промежуток заполняют числа, которым соответствуют слова одной длины).
  • Предикат "слово является конкатенацией слов и " (проще говоря, получается приписыванием справа к слову ) арифметичен. В самом деле, его можно выразить так: найдется слово из одних нулей, имеющее ту же длину, что и слово , при этом (умножение на соответствует дописыванию нулей, а добавление заменяет нули на буквы слова ).
  • Предикат "слово является началом слова " арифметичен. В самом деле, это означает, что существует слово , при котором есть конкатенация и .
  • То же самое верно для предикатов " есть конец слова ", " есть подслово слова " (последнее означает, что найдутся слова и , для которых

    есть конкатенация , и ; конкатенация трех слов выразима через конкатенацию двух).


  • Существует арифметический трехместный предикат с такими свойствами: (а) для любых и

    множество

    конечно; (б) среди множеств при различных парах встречаются все конечные множества. Например, в качестве такого предиката можно взять " есть подслово слова " (здесь есть конкатенация трех слов: , и снова ).

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



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

Теперь мы можем выразить, что число является степенью числа , следующим образом: существует конечное множество , которое содержит число и обладает таким свойством: всякий элемент либо равен , либо делится на и



также принадлежит . Теперь надо везде заменить множество на его код , а утверждение на , где — построенный нами кодирующий предикат.

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

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

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


Содержание раздела