Ваше рассуждение подразумевает, что RE = coRE, но это доказуемо ложно. Вы можете попытаться найти подтверждение этому, а затем посмотреть, где ваше снижение не удается.
Напомним, что RE - это класс сложности рекурсивно перечислимых языков, которые являются языками вида . Вы также можете думать об этом недетерминированными терминами: RE - это класс языков вида , где рекурсивно ( вычислимая).{x:P halts on input x}{x:(x,w)∈L′ for some w}L′
Вот доказательство того, что оба определения совпадают. Предположим, сначала . Пусть . Язык является рекурсивным и .L={x:p halts on input x}L′={(x,w):p halts on input x in w steps}L′L={x:(x,w)∈L′ for some w}
Для другого направления пусть , где рекурсивно, скажем, вычислено программой . Мы строим новую программу которая перечисляет все возможные и запускает на всех по порядку. Если когда-либо принимает для некоторого , то останавливается. Нетрудно проверить, что .L={x:(x,w)∈L′ for some w}L′P(x,w)Q(x)wP(x,w)wP(x,w)wQL={x:Q halts on input x}
Для вашего удобства здесь приведены схемы доказательства того, что RE отличается от coRE. Язык явно рекурсивно перечислим: программа для него просто запускает на . Предположим , что программа была такая , что останавливается , если и только если . Определим новую программу помощью . Является ли ? Если это так, то привалы на , так привалы на , так . Если , тоL={(P,x):P halts on input x}PxHH(P,x)(P,x)∉LGG(x)=H(x,x)(G,G)∈LGGH(G,G)( G , G ) ∉ L G G H ( G , G ) ( G , G ) ∈ L H(G,G)∉L(G,G)∉LG не останавливается на , поэтому не останавливается на , так . Это противоречие показывает, что не может существовать.GH(G,G)(G,G)∈LH
Теперь попробуйте запустить ваше доказательство в этом случае и посмотреть, что идет не так. Более подробно, попытайтесь сконструировать программу используя ваш рецепт, и следуйте доказательству - в какой-то момент что-то будет не совсем правильным.H