<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=178.66.42.139&amp;*</id>
		<title>Викиконспекты - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=178.66.42.139&amp;*"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/178.66.42.139"/>
		<updated>2026-06-11T19:44:28Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F&amp;diff=35914</id>
		<title>Универсальная функция</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F&amp;diff=35914"/>
				<updated>2014-01-19T16:26:16Z</updated>
		
		<summary type="html">&lt;p&gt;178.66.42.139: /* Главная нумерация */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Определение универсальной функции===&lt;br /&gt;
В этом разделе равенство двух вычислимых функций при заданных аргументах понимается в том смысле, что при этих аргументах вычисляющие программы для этих функций зависают, либо равны значения, возвращаемые ими.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition = Функция &amp;lt;tex&amp;gt;U : N \times N \rightarrow N \cup \lbrace \bot \rbrace&amp;lt;/tex&amp;gt; называется '''универсальной (universal function)''' для класса [[Вычислимые функции|вычислимых функций]] одного аргумента, если &amp;lt;tex&amp;gt;\forall n \in N&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;U_n(x) = U(n, x)&amp;lt;/tex&amp;gt; является вычислимой функцией и для любой вычислимой функции &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\exists n \in N : f(x) = U(n, x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
Менее формально, для универсальной функции должно выполняться следующее: &amp;quot;сечение&amp;quot; функции &amp;lt;tex&amp;gt; U_n &amp;lt;/tex&amp;gt; является вычислимой функцией и все вычислимые функции одного аргумента встречаются среди &amp;lt;tex&amp;gt;U_n&amp;lt;/tex&amp;gt; (отсюда универсальность). Универсальная функция нужна, например, для того, чтобы показать, что существует перечислимое неразрешимое множество (на самом деле это множество таких &amp;lt;tex&amp;gt; n &amp;lt;/tex&amp;gt;, для которых &amp;lt;tex&amp;gt; U(n, n) &amp;lt;/tex&amp;gt; определено).&lt;br /&gt;
&lt;br /&gt;
Аналогично определяется универсальная функция для класса всюду определенных вычислимых функций одного аргумента.&lt;br /&gt;
&lt;br /&gt;
===Существование универсальной функции===&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=Существует универсальная функция для класса вычислимых функций одного аргумента&lt;br /&gt;
|proof=Зафиксируем какой-либо язык программирования. Пусть программами на этом языке являются слова над алфавитом &amp;lt;tex&amp;gt;\Sigma&amp;lt;/tex&amp;gt;. Программа будет иметь номер &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;, если ее код - &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;-е слово среди всех слов над алфавитом &amp;lt;tex&amp;gt;\Sigma&amp;lt;/tex&amp;gt;, отсортированных сначала по возрастанию длины, а при равной длине - в лексикографическом порядке. При этом если &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;-я программа не компилируется, будем считать, что она всегда зависает. Рассмотрим функцию &amp;lt;tex&amp;gt;U(n,x):\mathbb{N}\times\mathbb{N}\rightarrow\mathbb{N}\cup\perp&amp;lt;/tex&amp;gt; такую, что &amp;lt;tex&amp;gt;U(n,x)=p_n(x)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;p_n&amp;lt;/tex&amp;gt; - &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;-я программа. Заметим, что по определению вычислимой функции существует программа, вычисляющая ее. Но в заданной нумерации у любой программы есть номер. Таким образом для любой вычислимой функции &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; существует номер &amp;lt;tex&amp;gt;n: U(n,x)=f(x)&amp;lt;/tex&amp;gt;. И наоборот - &amp;lt;tex&amp;gt;f_n=U(n)&amp;lt;/tex&amp;gt; - является вычислимой функцией. Вычисляющая программа для &amp;lt;tex&amp;gt;U&amp;lt;/tex&amp;gt; содержит интерпретатор для зафиксированного языка программирования, по номеру программы (первый аргумент) восстанавливает ее код, и передает ей второй аргумент, возвращая результат ее работы. Таким образом &amp;lt;tex&amp;gt;U_n(x)=U(n,x)&amp;lt;/tex&amp;gt; - вычислима для любого &amp;lt;tex&amp;gt;n\in\mathbb{N}&amp;lt;/tex&amp;gt;, и &amp;lt;tex&amp;gt;\forall f(x) \exists n\in\mathbb{N}: f(x)=U(n,x)&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;f(x)&amp;lt;/tex&amp;gt; - вычислима, значит U(n,x) - универсальная функция.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Вычислимость универсальной функции===&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement = Для класса вычислимых функций одного аргумента существует вычислимая универсальная функция.&lt;br /&gt;
|proof = Занумеруем программы нашего языка натуральными числами. Рассмотрим функцию &amp;lt;tex&amp;gt;U(n, x) = p_n(x)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;p_n&amp;lt;/tex&amp;gt; — &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;-ая программа в указанной нумерации. Для любой вычислимой функции &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\exists n \in N : f(x) = p_n(x) = U(n, x)&amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt;\forall n \in N&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;U_n(x) = U(n, x) = p_n(x)&amp;lt;/tex&amp;gt;, очевидно, является вычислимой функцией. Значит &amp;lt;tex&amp;gt;U(n, x)&amp;lt;/tex&amp;gt; — универсальная функция для класса вычислимых функций одного аргумента. Очевидно, что &amp;lt;tex&amp;gt;U(n, x)&amp;lt;/tex&amp;gt; вычислима. Действительно, для того, чтобы вычислить &amp;lt;tex&amp;gt;U(n, x)&amp;lt;/tex&amp;gt;, достаточно вернуть вывод программы &amp;lt;tex&amp;gt;p_n&amp;lt;/tex&amp;gt; на входе &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement = Для класса всюду определенных вычислимых функций одного аргумента не существует всюду определенной вычислимой универсальной функции.&lt;br /&gt;
|proof = От противного. Пусть &amp;lt;tex&amp;gt;U(n, x)&amp;lt;/tex&amp;gt; — всюду определенная вычислимая универсальная функция для класса всюду определенных вычислимых функций одного аргумента. Воспользуемся теперь диагональным методом. Рассмотрим всюду определенную вычислимую функцию одного аргумента &amp;lt;tex&amp;gt;d(x) = U(x, x) + 1&amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt;\exists n \in N : d(x) = U(n, x)&amp;lt;/tex&amp;gt; в силу того, что &amp;lt;tex&amp;gt;U(n, x)&amp;lt;/tex&amp;gt; — универсальная для соответствующего класса функций. Так как &amp;lt;tex&amp;gt;d(x)&amp;lt;/tex&amp;gt; всюду определена, то она не зависает на аргументе &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;. Значит &amp;lt;tex&amp;gt;d(n) = U(n, n)&amp;lt;/tex&amp;gt;, но в то же время &amp;lt;tex&amp;gt;d(n) = U(n, n) + 1&amp;lt;/tex&amp;gt;. Противоречие.&lt;br /&gt;
}}&lt;br /&gt;
Отметим, что функция &amp;lt;tex&amp;gt;u(n) = U(n, n)&amp;lt;/tex&amp;gt; называется диагональной (отсюда и пошло название метода).&lt;br /&gt;
&lt;br /&gt;
===Главная нумерация===&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition='''Нумерация (numbering)''' множества &amp;lt;tex&amp;gt;X-&amp;lt;/tex&amp;gt; это такое всюду определенное отображение &amp;lt;tex&amp;gt; f : \mathbb{N} \rightarrow X&amp;lt;/tex&amp;gt;, область значений которого есть все множество &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Нумерация, заданная двуместной универсальной функцией &amp;lt;tex&amp;gt;U(n,x)&amp;lt;/tex&amp;gt; называется '''главной (Гёделевой) (Godel numbering)''', если для любой двуместной вычислимой функции &amp;lt;tex&amp;gt;V(n,x)&amp;lt;/tex&amp;gt; существует вычислимая, всюду определенная функция &amp;lt;tex&amp;gt;S:\mathbb{N}\rightarrow\mathbb{N}&amp;lt;/tex&amp;gt; такая, что &amp;lt;tex&amp;gt;V(n,x)=U(S(n),x)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=Существует главная нумерация.&lt;br /&gt;
|proof=Рассмотрим универсальную функцию, построенную ранее, и нумерацию, соответствующую ей. Обозначим программу, вычисляющую функцию &amp;lt;tex&amp;gt;V(n,x)&amp;lt;/tex&amp;gt; как &amp;lt;tex&amp;gt;v(n,x)&amp;lt;/tex&amp;gt;. Построим программу (назовем ее &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;) с одним параметром - &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt;, которая генерирует код программы &amp;lt;tex&amp;gt;v(n,x)&amp;lt;/tex&amp;gt;, но с фиксированным &amp;lt;tex&amp;gt;n = m&amp;lt;/tex&amp;gt;, и возвращает ее номер в заданной нумерации. Построенная программа вычисляет искомую функцию для универсальной двуместной функции &amp;lt;tex&amp;gt;U&amp;lt;/tex&amp;gt; и двуместной функции &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;V(n,x)=U(S(n),x)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; - функция, вычисляемая программой &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;. Из вычислимости &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; следует существование &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt;, и за конечное время мы можем вернуть номер любой программы в выбранной нумерации. Таким образом &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; - вычислимая, всюду определенная.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
С помощью главной нумерации можно пронумеровать все программы. Также, используя главную нумерацию не сложно определить номер программы, являющуюся композицией двух программ (то есть состоящей из двух подпрограмм и основной функции, возвращающей результат композиции исходных программ). Пусть нам необходимо по номерам функций &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt; определить номер функции-композиции &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt;&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=Существует такая функция &amp;lt;tex&amp;gt;c&amp;lt;/tex&amp;gt;, которая всюду определена и которая по номерам функций &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt; дает номер &amp;lt;tex&amp;gt;c(p, q)&amp;lt;/tex&amp;gt;  их композиций. То есть выполняется свойство &amp;lt;tex&amp;gt;U(c(p,q),x) = U(p, U(q,x))&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=Возьмем некоторую функцию &amp;lt;tex&amp;gt;V([p,q],x)=U(p, U(q,x))&amp;lt;/tex&amp;gt;. Исходя из определения главной нумерации существует такая вычислимая, всюду определенная функция &amp;lt;tex&amp;gt;S: V(n,x)=U(s(n),x)&amp;lt;/tex&amp;gt; для всех &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;. А тогда &amp;lt;tex&amp;gt;V([p,q],x)=U(S(p,q), x)&amp;lt;/tex&amp;gt;, что значит функция с, определяемая как &amp;lt;tex&amp;gt;c(p,q)=S([p,q])&amp;lt;/tex&amp;gt;, будет искомой.&lt;br /&gt;
}}&lt;br /&gt;
Отметим, что при доказательстве существования функции-композиции мы пользуемся основным свойством главной нумерации, а значит для неглавных нумерации мы не сможем построить такую функций и не сможем найти номер функции-композиции двух функций.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
[http://www.mccme.ru/free-books/shen/shen-logic-part3-2.pdf ''Н. К. Верещагин,  А. Шень.'' '''Лекции по математической логике и теории алгоритмов. Часть 3. Вычислимые функции.''' — М.: МЦНМО, 1999, с. 16]&lt;br /&gt;
&lt;br /&gt;
''В. А. Успенский'' '''Лекции о вычислимых функциях''' — М.: ГИФМЛ, 1960, с. 203&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/G%C3%B6del_numbering Godel numbering on Wiki]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория формальных языков]]&lt;br /&gt;
[[Категория: Теория вычислимости]]&lt;/div&gt;</summary>
		<author><name>178.66.42.139</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F&amp;diff=35911</id>
		<title>Универсальная функция</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F&amp;diff=35911"/>
				<updated>2014-01-19T16:04:11Z</updated>
		
		<summary type="html">&lt;p&gt;178.66.42.139: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Определение универсальной функции===&lt;br /&gt;
В этом разделе равенство двух вычислимых функций при заданных аргументах понимается в том смысле, что при этих аргументах вычисляющие программы для этих функций зависают, либо равны значения, возвращаемые ими.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition = Функция &amp;lt;tex&amp;gt;U : N \times N \rightarrow N \cup \lbrace \bot \rbrace&amp;lt;/tex&amp;gt; называется '''универсальной (universal function)''' для класса [[Вычислимые функции|вычислимых функций]] одного аргумента, если &amp;lt;tex&amp;gt;\forall n \in N&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;U_n(x) = U(n, x)&amp;lt;/tex&amp;gt; является вычислимой функцией и для любой вычислимой функции &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\exists n \in N : f(x) = U(n, x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
Менее формально, для универсальной функции должно выполняться следующее: &amp;quot;сечение&amp;quot; функции &amp;lt;tex&amp;gt; U_n &amp;lt;/tex&amp;gt; является вычислимой функцией и все вычислимые функции одного аргумента встречаются среди &amp;lt;tex&amp;gt;U_n&amp;lt;/tex&amp;gt; (отсюда универсальность). Универсальная функция нужна, например, для того, чтобы показать, что существует перечислимое неразрешимое множество (на самом деле это множество таких &amp;lt;tex&amp;gt; n &amp;lt;/tex&amp;gt;, для которых &amp;lt;tex&amp;gt; U(n, n) &amp;lt;/tex&amp;gt; определено).&lt;br /&gt;
&lt;br /&gt;
Аналогично определяется универсальная функция для класса всюду определенных вычислимых функций одного аргумента.&lt;br /&gt;
&lt;br /&gt;
===Существование универсальной функции===&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=Существует универсальная функция для класса вычислимых функций одного аргумента&lt;br /&gt;
|proof=Зафиксируем какой-либо язык программирования. Пусть программами на этом языке являются слова над алфавитом &amp;lt;tex&amp;gt;\Sigma&amp;lt;/tex&amp;gt;. Программа будет иметь номер &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;, если ее код - &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;-е слово среди всех слов над алфавитом &amp;lt;tex&amp;gt;\Sigma&amp;lt;/tex&amp;gt;, отсортированных сначала по возрастанию длины, а при равной длине - в лексикографическом порядке. При этом если &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;-я программа не компилируется, будем считать, что она всегда зависает. Рассмотрим функцию &amp;lt;tex&amp;gt;U(n,x):\mathbb{N}\times\mathbb{N}\rightarrow\mathbb{N}\cup\perp&amp;lt;/tex&amp;gt; такую, что &amp;lt;tex&amp;gt;U(n,x)=p_n(x)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;p_n&amp;lt;/tex&amp;gt; - &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;-я программа. Заметим, что по определению вычислимой функции существует программа, вычисляющая ее. Но в заданной нумерации у любой программы есть номер. Таким образом для любой вычислимой функции &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; существует номер &amp;lt;tex&amp;gt;n: U(n,x)=f(x)&amp;lt;/tex&amp;gt;. И наоборот - &amp;lt;tex&amp;gt;f_n=U(n)&amp;lt;/tex&amp;gt; - является вычислимой функцией. Вычисляющая программа для &amp;lt;tex&amp;gt;U&amp;lt;/tex&amp;gt; содержит интерпретатор для зафиксированного языка программирования, по номеру программы (первый аргумент) восстанавливает ее код, и передает ей второй аргумент, возвращая результат ее работы. Таким образом &amp;lt;tex&amp;gt;U_n(x)=U(n,x)&amp;lt;/tex&amp;gt; - вычислима для любого &amp;lt;tex&amp;gt;n\in\mathbb{N}&amp;lt;/tex&amp;gt;, и &amp;lt;tex&amp;gt;\forall f(x) \exists n\in\mathbb{N}: f(x)=U(n,x)&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;f(x)&amp;lt;/tex&amp;gt; - вычислима, значит U(n,x) - универсальная функция.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Вычислимость универсальной функции===&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement = Для класса вычислимых функций одного аргумента существует вычислимая универсальная функция.&lt;br /&gt;
|proof = Занумеруем программы нашего языка натуральными числами. Рассмотрим функцию &amp;lt;tex&amp;gt;U(n, x) = p_n(x)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;p_n&amp;lt;/tex&amp;gt; — &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;-ая программа в указанной нумерации. Для любой вычислимой функции &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\exists n \in N : f(x) = p_n(x) = U(n, x)&amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt;\forall n \in N&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;U_n(x) = U(n, x) = p_n(x)&amp;lt;/tex&amp;gt;, очевидно, является вычислимой функцией. Значит &amp;lt;tex&amp;gt;U(n, x)&amp;lt;/tex&amp;gt; — универсальная функция для класса вычислимых функций одного аргумента. Очевидно, что &amp;lt;tex&amp;gt;U(n, x)&amp;lt;/tex&amp;gt; вычислима. Действительно, для того, чтобы вычислить &amp;lt;tex&amp;gt;U(n, x)&amp;lt;/tex&amp;gt;, достаточно вернуть вывод программы &amp;lt;tex&amp;gt;p_n&amp;lt;/tex&amp;gt; на входе &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement = Для класса всюду определенных вычислимых функций одного аргумента не существует всюду определенной вычислимой универсальной функции.&lt;br /&gt;
|proof = От противного. Пусть &amp;lt;tex&amp;gt;U(n, x)&amp;lt;/tex&amp;gt; — всюду определенная вычислимая универсальная функция для класса всюду определенных вычислимых функций одного аргумента. Воспользуемся теперь диагональным методом. Рассмотрим всюду определенную вычислимую функцию одного аргумента &amp;lt;tex&amp;gt;d(x) = U(x, x) + 1&amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt;\exists n \in N : d(x) = U(n, x)&amp;lt;/tex&amp;gt; в силу того, что &amp;lt;tex&amp;gt;U(n, x)&amp;lt;/tex&amp;gt; — универсальная для соответствующего класса функций. Так как &amp;lt;tex&amp;gt;d(x)&amp;lt;/tex&amp;gt; всюду определена, то она не зависает на аргументе &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;. Значит &amp;lt;tex&amp;gt;d(n) = U(n, n)&amp;lt;/tex&amp;gt;, но в то же время &amp;lt;tex&amp;gt;d(n) = U(n, n) + 1&amp;lt;/tex&amp;gt;. Противоречие.&lt;br /&gt;
}}&lt;br /&gt;
Отметим, что функция &amp;lt;tex&amp;gt;u(n) = U(n, n)&amp;lt;/tex&amp;gt; называется диагональной (отсюда и пошло название метода).&lt;br /&gt;
&lt;br /&gt;
===Главная нумерация===&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition='''Нумерация (numbering)''' множества &amp;lt;tex&amp;gt;X-&amp;lt;/tex&amp;gt; это такое всюду определенное отображение &amp;lt;tex&amp;gt; f : \mathbb{N} \rightarrow X&amp;lt;/tex&amp;gt;, область значений которого есть все множество &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Нумерация, заданная двуместной универсальной функцией &amp;lt;tex&amp;gt;U(n,x)&amp;lt;/tex&amp;gt; называется '''главной (Гёделевой) (Godel numbering)''', если для любой двуместной вычислимой функции &amp;lt;tex&amp;gt;V(n,x)&amp;lt;/tex&amp;gt; существует вычислимая, всюду определенная функция &amp;lt;tex&amp;gt;S:\mathbb{N}\rightarrow\mathbb{N}&amp;lt;/tex&amp;gt; такая, что &amp;lt;tex&amp;gt;V(n,x)=U(S(n),x)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=Существует главная нумерация.&lt;br /&gt;
|proof=Рассмотрим универсальную функцию, построенную ранее, и нумерацию, соответствующую ей. Обозначим программу, вычисляющую функцию &amp;lt;tex&amp;gt;V(n,x)&amp;lt;/tex&amp;gt; как &amp;lt;tex&amp;gt;v(n,x)&amp;lt;/tex&amp;gt;. Построим программу (назовем ее &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;) с одним параметром - &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt;, которая генерирует код программы &amp;lt;tex&amp;gt;v(n,x)&amp;lt;/tex&amp;gt;, но с фиксированным &amp;lt;tex&amp;gt;n = m&amp;lt;/tex&amp;gt;, и возвращает ее номер в заданной нумерации. Построенная программа вычисляет искомую функцию для универсальной двуместной функции &amp;lt;tex&amp;gt;U&amp;lt;/tex&amp;gt; и двуместной функции &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;V(n,x)=U(S(n),x)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; - функция, вычисляемая программой &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;. Из вычислимости &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; следует существование &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt;, и за конечное время мы можем вернуть номер любой программы в выбранной нумерации. Таким образом &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; - вычислимая, всюду определенная.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
С помощью главной нумерации можно пронумеровать все программы. Также, используя главную нумерацию не сложно определить номер программы, являющуюся композицией двух программ (то есть состоящей из двух подпрограмм и основной функции, возвращающей результат композиции исходных программ).&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
[http://www.mccme.ru/free-books/shen/shen-logic-part3-2.pdf ''Н. К. Верещагин,  А. Шень.'' '''Лекции по математической логике и теории алгоритмов. Часть 3. Вычислимые функции.''' — М.: МЦНМО, 1999, с. 16]&lt;br /&gt;
&lt;br /&gt;
''В. А. Успенский'' '''Лекции о вычислимых функциях''' — М.: ГИФМЛ, 1960, с. 203&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/G%C3%B6del_numbering Godel numbering on Wiki]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория формальных языков]]&lt;br /&gt;
[[Категория: Теория вычислимости]]&lt;/div&gt;</summary>
		<author><name>178.66.42.139</name></author>	</entry>

	</feed>