Теорема Райса-Шапиро — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Теорема Райса-Шапиро: Ещё кусок доказательства леммы 2 внутри т. Р.-Ш.)
(Теорема Райса-Шапиро: Доказательство самой теоремы)
Строка 51: Строка 51:
 
<tex>\Leftarrow</tex>
 
<tex>\Leftarrow</tex>
  
:Очевидно (перебор по TL).
+
Очевидно (перебор по TL).
  
  
 
<tex>\Rightarrow</tex>
 
<tex>\Rightarrow</tex>
  
:Здесь нам потребуются две вспомогательные леммы.
+
Здесь нам потребуются две вспомогательные леммы.
:{{Лемма
+
{{Лемма
 
|statement =
 
|statement =
 
Пусть <tex>A</tex> - перечислимое свойство функций, <tex>g \in A</tex>, <tex>h</tex> - продолжение <tex>g</tex>.
 
Пусть <tex>A</tex> - перечислимое свойство функций, <tex>g \in A</tex>, <tex>h</tex> - продолжение <tex>g</tex>.
Строка 100: Строка 100:
 
Если <tex>n \in K</tex>, то <tex>V(n, x) = g(x)</tex> при <tex>x = 0\ldots t-1</tex> для какого-то <tex>t</tex>.
 
Если <tex>n \in K</tex>, то <tex>V(n, x) = g(x)</tex> при <tex>x = 0\ldots t-1</tex> для какого-то <tex>t</tex>.
  
Запустим параллельно проверку, принадлежит ли <tex>n</tex> множеству <tex>K</tex> и проверку, принадлежит ли <tex>V(n, x)</tex> множетсву <tex>A</tex>.
+
Запустим параллельно проверку, принадлежит ли <tex>n</tex> множеству <tex>K</tex> и проверку, принадлежит ли <tex>V(n, x)</tex> множеству <tex>A</tex>.
  
 
<продолжение доказательства леммы>
 
<продолжение доказательства леммы>
Строка 106: Строка 106:
  
  
<продолжение доказательства теоремы>
+
Вернёмся к доказательству теоремы.
 +
 
 +
Функции с конечной областью определения записываются так:
 +
 
 +
<tex>f(x):</tex>
 +
    if <tex>x = x_1</tex>
 +
        return <tex>y_1</tex>
 +
    <tex>\cdots</tex>
 +
    if <tex>x = x_i</tex>
 +
        return <tex>y_i</tex>
 +
    <tex>\cdots</tex>
 +
    <tex>\perp</tex>
 +
 
 +
Такие функции перечислимы. Значит такие функции, удоволетворяющие <tex>A</tex>, тоже перечислимы.
 +
 
 +
<tex>A_{\Gamma} \subset A</tex> по первой вспомогательной лемме.
 +
 
 +
<tex>A \subset A_{\Gamma}</tex> по второй вспомогательной лемме.
  
 +
Значит <tex>A = A_{\Gamma}</tex>. Теорема доказана.
 
}}
 
}}

Версия 19:27, 17 января 2012

Определение образца

Определение:
Пусть [math]\gamma=\{\lt x_1,y_1\gt ,\lt x_2,y_2\gt ,...,\lt x_n,y_n\gt \}[/math].
Тогда [math]\gamma[/math] называется образцом.


Свойство образца

Определение:
Пусть [math]A_{\gamma}=\{p | p(x_1)=y_1 \wedge p(x_2)=y_2 \wedge ... \wedge p(x_n)=y_n\}[/math], где [math]\lt x_i, y_i\gt \in \gamma[/math].
Тогда [math]A_{\gamma}[/math] называется свойством образца [math]\gamma[/math].


Лемма о перечислимости свойства образца

Лемма:
Свойство [math]A_{\gamma}[/math] перечислимо для любого образца [math]\gamma[/math].
Доказательство:
[math]\triangleright[/math]

Очевидно, как строится программа, которая возвращает 1, если [math]p \in A_{\gamma}[/math] (запускаем [math]p[/math] на [math]x[/math]-ах и проверяем, что программа вернёт соответствующие [math]y[/math]-ки).

Такой программы достаточно для доказательства перечислимости.
[math]\triangleleft[/math]


Лемма о перечислимости свойства перечислимого множества образцов

Лемма:
Пусть [math]\Gamma[/math] - перечислимое множество образцов, [math]A_{\Gamma} = \bigcup\limits_{\gamma \in \Gamma}{A_{\gamma}}[/math]. Тогда [math]A_{\Gamma}[/math] - перечислимо.
Доказательство:
[math]\triangleright[/math]

Приведём программу, выдающую 1, если [math]p \in A_{\Gamma}[/math]:

[math]q(p):[/math]
  for [math]k = 1..+\infty[/math]
      for [math]\gamma \in \Gamma[1..k][/math]
          if [math](p \in A_{\gamma})|_{TL(k)}[/math]
              return 1
Такой программы достаточно для доказательства перечислимости.
[math]\triangleleft[/math]


Теорема Райса-Шапиро

Теорема:
Свойство функций [math]A[/math] перечислимо тогда и только тогда, когда [math]\exists \Gamma: A = A_{\Gamma}[/math], где [math]\Gamma[/math] - перечислимое множество образцов.
Доказательство:
[math]\triangleright[/math]

[math]\Leftarrow[/math]

Очевидно (перебор по TL).


[math]\Rightarrow[/math]

Здесь нам потребуются две вспомогательные леммы.

Лемма:
Пусть [math]A[/math] - перечислимое свойство функций, [math]g \in A[/math], [math]h[/math] - продолжение [math]g[/math]. Тогда [math]h \in A[/math].
Доказательство:
[math]\triangleright[/math]

Докажем от противного. Пусть [math]g \in A[/math], [math]h[/math] - продолжение [math]g[/math], [math]h \notin A[/math].

Рассмотрим перечислимое и неразрешимое множество [math]K[/math] и следующую программу:

[math]V(n, x) = \begin{cases} h(x)\text{, if $n \in K$;}\\ g(x)\text{, else.} \end{cases}[/math]

[math]V[/math] - вычислимая (можно параллельно запустить [math]g(x)[/math] и проверку, принадлежит ли [math]n[/math] множеству [math]K[/math] (просто перечисляя это множество); если [math]g(x)[/math] успешно выполнится, то вернуть её результат).

Пусть [math]p(x)=V(n, x)[/math].

Тогда программа, которая запускает параллельно проверку, принадлежит ли [math]n[/math] множеству [math]K[/math] (просто перечисляя это множество), и проверку, принадлежит ли [math]p[/math] множеству [math]A[/math], является разрешающей программой для множества [math]K[/math] (так как если [math]p \in A[/math], то [math]n \notin K[/math] по построению [math]V(n, x)[/math]).

Противоречие, так как брали неразрешимое [math]K[/math].
[math]\triangleleft[/math]


Лемма:
Если [math]A[/math] - перечислимое свойство функций, [math]g \in A[/math], то [math]\exists h[/math], такое что [math]|Dom(h)| \lt +\infty[/math], [math]g[/math] - продолжение [math]h[/math], [math]h \in A[/math].
Доказательство:
[math]\triangleright[/math]

Рассмотрим перечислимое и неразрешимое множество [math]K[/math] и следующую программу:

[math]V(n, x) = \begin{cases} g(x)\text{, if (1);}\\ \perp\text{, else;} \end{cases}[/math]

где условие [math](1)[/math] следующее: через [math]x[/math] шагов перечисления [math]K[/math] число [math]n[/math] не появилось.

Если [math]n \notin K[/math], то [math]V(n, x) = g(x)[/math].

Если [math]n \in K[/math], то [math]V(n, x) = g(x)[/math] при [math]x = 0\ldots t-1[/math] для какого-то [math]t[/math].

Запустим параллельно проверку, принадлежит ли [math]n[/math] множеству [math]K[/math] и проверку, принадлежит ли [math]V(n, x)[/math] множеству [math]A[/math].

<продолжение доказательства леммы>
[math]\triangleleft[/math]


Вернёмся к доказательству теоремы.

Функции с конечной областью определения записываются так:

[math]f(x):[/math]
    if [math]x = x_1[/math]
        return [math]y_1[/math]
    [math]\cdots[/math]
    if [math]x = x_i[/math]
        return [math]y_i[/math]
    [math]\cdots[/math]
    [math]\perp[/math]

Такие функции перечислимы. Значит такие функции, удоволетворяющие [math]A[/math], тоже перечислимы.

[math]A_{\Gamma} \subset A[/math] по первой вспомогательной лемме.

[math]A \subset A_{\Gamma}[/math] по второй вспомогательной лемме.

Значит [math]A = A_{\Gamma}[/math]. Теорема доказана.
[math]\triangleleft[/math]