Материал из Викиконспекты
Определение: |
Рассмотрим множество перечислимых языков [math]RE[/math].
- Свойством языков называется множество [math]A \subset RE[/math].
- Свойство [math]A[/math] называется тривиальным, если [math]A = \varnothing [/math] или [math]A = RE[/math].
- Языком свойства называется множество программ, языки которых обладают этим свойством: [math]L(A) \overset{\underset{\mathrm{def}}{}}{=} \lbrace p | L(p) \in A \rbrace [/math].
- Свойство [math]A[/math] называется разрешимым (перечислимым), если [math]L(A)[/math] разрешимо (перечислимо).
|
Теорема: |
Никакое нетривиальное свойство языков не является разрешимым. |
Доказательство: |
[math]\triangleright[/math] |
От противного. Предположим, что [math]A[/math] разрешимо и нетривиально, [math]p_A[/math] - программа, разрешающая [math]A[/math].
Не умаляя общности, можно считать, что [math]\varnothing \notin A[/math] (в противном случае перейдем к [math]RE \setminus A[/math], которое также будет разрешимым и нетривиальным).
В то же время, поскольку [math]A[/math] непусто, найдется перечислимый язык [math]X \in A[/math]. Пусть [math]p_X[/math] - полуразрешитель [math]X[/math].
Рассмотрим вспомогательную программу:
[math]g_{i,x}(y)[/math]
if U(i, x) = 1
return [math]p_X(y)[/math]
else
зависнуть
Нетрудно понять, что в разумной модели вычислений номер этой программы можно вычислить по данным [math]i,x[/math]. Значит, можно рассмотреть такую программу:
[math]US(\langle i, x \rangle )[/math]
return [math]p_A ( g_{i,x} ) [/math]
Заметим, что
[math]
L(g_{i,x}) = \begin{cases}
X & U(i, x) = 1 \\
\varnothing & U(i, x) \neq 1 \\
\end{cases}
[/math]
Следовательно, [math]
US(\langle i, x \rangle ) = p_A(g_{i,x}) = \begin{cases}
p_A(p_X) & U(i, x) = 1 \\
p_A(p_\varnothing ) & U(i, x) \neq 1 \\
\end{cases} = \begin{cases}
1 & U(i, x) = 1 \\
0 & U(i, x) \neq 1 \\
\end{cases}
[/math] - программа, разрешающая универсальное множество. Противоречие. |
[math]\triangleleft[/math] |