Изменения

Перейти к: навигация, поиск

Разрешимые (рекурсивные) языки

729 байт добавлено, 07:07, 14 декабря 2011
Нет описания правки
Приведём программу, разрешающую наш язык:
<tex>p(i)</tex>
'''if''' (остаток от деления i на 2 = 0)
'''return''' 1
'''else'''
Универсальный язык неразрешим.
|proof=
Докажем от противного. <br/br>Пусть язык <tex> U </tex> разрешим. <br/br>Тогда существует такая программа <tex> u </tex>, что <tex> \forall \langle p, x \rangle \in U: u(\langle p, x \rangle) = 1</tex>, а для <tex> \forall \langle p, x \rangle \notin U: u(\langle p, x \rangle) = 0</tex>. <br/>Составим следующую программу:  <tex>pr(ix)</tex> '''if''' u(остаток от деления i на 2 <x, x>) = 0)1 '''while''' true '''else'''
'''return''' 1
Теперь рассмотрим вызов <tex> r(r) </tex>.* Если <tex> u(\langle r, r \rangle) = 1 </tex>, то условие '''elseif'''выполнится и вызов зациклится. Но, <tex> u(\langle r, r \rangle) = 1 \Rightarrow r(r) = 1</tex>. * Если <tex> u(\langle r, r \rangle) = 0 </tex>, то условие '''returnif''' не выполнится и вызов вернёт <tex>1</tex>. Но, <tex> u(\langle r, r \rangle) = 0\Rightarrow r(r) \ne 1</tex>. Программа нигде не может зависнуть и таким Таким образом разрешает наш язык, из предположения о разрешимости универсального языка мы пришли к противоречию.
}}
Анонимный участник

Навигация