Twoje rozumowanie sugeruje, że RE = coRE, ale jest to prawdopodobnie nieprawda. Możesz spróbować znaleźć na to dowód, a następnie sprawdzić, gdzie kończy się niepowodzenie.
Przypomnijmy, że RE jest klasą złożoności języków z wyliczaniem rekurencyjnym, które są językami postaci . Można również pomyśleć o tym w kategoriach non-deterministycznych: RE jest klasa języków postaci { x : ( x , w ) ∈ L ' dla niektórych wag } , gdzie L ' jest rekurencyjne (obliczalne).{ x : P zatrzymuje się na wejściu x }{ x : ( x , w ) ∈ L.′ dla niektórych w }L.′
Oto dowód, że obie definicje są zgodne. Załóżmy, że pierwsze . Niech L ' = { ( x , wagowo ) : str postojów na wejściowego x w W krokach } . Język L ' jest rekurencyjny, a L = { x : ( x , w ) ∈ L ′ dla niektórych w } .L = { x : p zatrzymuje się na wejściu x }L.′= { ( X , W ) : P zatrzymanie na wejściu X w W krokach }L.′L = { x : ( x , w ) ∈ L.′ dla niektórych w }
Dla drugiego kierunku niech , gdzie L ' jest rekurencyjne, powiedzmy obliczone przez program P ( x , w ) . Konstruujemy nowy program Q ( x ), który wylicza wszystkie możliwe w i uruchamia P ( x , w ) na wszystkich w , w kolejności. Jeśli P ( x , wL = { x : ( x , w ) ∈ L.′ dla niektórych w }L.′P.( x , w )Q ( x )wP.( x , w )w kiedykolwiek akceptuje dla niektórych w , wtedy Q zatrzymuje się. Nietrudno sprawdzić, czy L = { x : Q zatrzymuje się na wejściu x } .P.( x , w )wQL = { x : Q zatrzymuje się na wejściu x }
Dla Twojej wygody, oto zarys dowodu, że RE różni się od coRE. Język jest wyraźnie wyliczalny rekurencyjnie: program dla tego po prostu uruchamia P na x . Załóżmy, że było to program H , tak że H ( P , x ) zatrzymanie wtedy i tylko wtedy, gdy ( P , x ) ∉ l . Nowy program G definiujemy za pomocą G ( x ) =L = { ( P, x ) : P zatrzymuje się na wejściu x }P.xH.H.( P, x )( P, x ) ∉ L.sol . Czy ( G , G ) ∈ L ? Jeśli tak, wtedy G zatrzymanie na G , tak, H postojów w ( G , G ) , tak, ( G , G ) ∉ L . Jeśli ( G , G ) ∉ L , to G nie zatrzymuje się na G , więc H nie zatrzymuje się na ( G , G )G ( x ) = H( x , x )( G , G ) ∈ L.solsolH.( G , G )( G , G ) ∉ L.( G , G ) ∉ L.solsolH.( G , G )Tak . Ta sprzeczność pokazuje, że H. nie może istnieć.( G , G ) ∈ L.H.
Teraz spróbuj uruchomić dowód w tym przypadku i zobacz, co poszło nie tak. Bardziej szczegółowo, spróbuj skonstruować program przy użyciu swojego przepisu i postępuj zgodnie z dowodem - w którymś momencie coś nie będzie w porządku.H.