Материал из Викиконспекты
Определение образца
Определение: |
Пусть γ={<x1,y1>,<x2,y2>,...,<xn,yn>}.
Тогда γ называется образцом. |
Свойство образца
Определение: |
Пусть Aγ={p|p(x1)=y1∧p(x2)=y2∧...∧p(xn)=yn}, где <xi,yi>∈γ.
Тогда Aγ называется свойством образца γ. |
Лемма о перечислимости свойства образца
Лемма: |
Свойство Aγ перечислимо для любого образца γ. |
Доказательство: |
▹ |
Очевидно, как строится программа, которая возвращает 1, если p∈Aγ (запускаем p на x-ах и проверяем, что программа вернёт соответствующие y-ки).
Такой программы достаточно для доказательства перечислимости. |
◃ |
Лемма о перечислимости свойства перечислимого множества образцов
Лемма: |
Пусть Γ - перечислимое множество образцов, AΓ=⋃γ∈ΓAγ.
Тогда AΓ - перечислимо. |
Доказательство: |
▹ |
Приведём программу, выдающую 1, если p∈AΓ:
q(p):
for k=1..+∞
for γ∈Γ[1..k]
if (p∈Aγ)|TL(k)
return 1
Такой программы достаточно для доказательства перечислимости. |
◃ |
Теорема Райса-Шапиро
Теорема: |
Свойство функций A перечислимо тогда и только тогда, когда ∃Γ:A=AΓ, где Γ - перечислимое множество образцов. |
Доказательство: |
▹ |
⇐
Очевидно (перебор по TL).
⇒
Здесь нам потребуются две вспомогательные леммы.
Лемма: |
Пусть A - перечислимое свойство функций, g∈A, h - продолжение g.
Тогда h∈A. |
Доказательство: |
▹ |
Докажем от противного.
Пусть g∈A, h - продолжение g, h∉A.
Рассмотрим перечислимое и неразрешимое множество K и следующую программу:
V(n,x)={h(x), if n∈K;g(x), else.
V - вычислимая (можно параллельно запустить g(x) и проверку, принадлежит ли n множеству K (просто перечисляя это множество); если g(x) успешно выполнится, то вернуть её результат).
Пусть p(x)=V(n,x).
Тогда программа, которая запускает параллельно проверку, принадлежит ли n множеству K (просто перечисляя это множество), и проверку, принадлежит ли p множеству A, является разрешающей программой для множества K (так как если p∈A, то n∉K по построению V(n,x)).
Противоречие, так как брали неразрешимое K. | ◃ |
Лемма: |
Если A - перечислимое свойство функций, g∈A, то ∃h, такое что |Dom(h)|<+∞, g - продолжение h, h∈A. |
Доказательство: |
▹ |
Рассмотрим перечислимое и неразрешимое множество K и следующую программу:
V(n,x)={g(x), if (1);⊥, else;
где условие (1) следующее: через x шагов перечисления K число n не появилось.
Если n∉K, то V(n,x)=g(x).
Если n∈K, то V(n,x)=g(x) при x=0…t−1 для какого-то t.
Запустим параллельно проверку, принадлежит ли n множеству K и проверку, принадлежит ли V(n,x) множеству A.
<продолжение доказательства леммы> | ◃ |
Вернёмся к доказательству теоремы.
Функции с конечной областью определения записываются так:
f(x):
if x=x1
return y1
⋯
if x=xi
return yi
⋯
⊥
Такие функции перечислимы. Значит такие функции, удоволетворяющие A, тоже перечислимы.
AΓ⊂A по первой вспомогательной лемме.
A⊂AΓ по второй вспомогательной лемме.
Значит A=AΓ. Теорема доказана. |
◃ |