広告1:ステートメントは真実ですが、あなたの推論はそうではありません。列挙を変更することはできません。の定義L2要素の順序と密接に関連しています。これは決定する簡単なアルゴリズムですL2:
decide2(w) = {
(u,v) = split (w,#) // w = u#v
if ( decide1(u) && decide1(v) ) {
i = 1
while ( true ) {
if ( enumerate1(i) == u ) {
return true
}
else if ( enumerate1(i) == v ) {
return false
}
i += 1
}
}
return false
}
ここでdecide1
、決定者はL1そしてenumerate1
の列挙子ですL1、どちらも想定によって存在します。while
ループは常に終了することに注意してください。その時点で、私たちはそれを知っていますu,v∈L1 したがって、ループはそれら(実際には、最初に発生するもの)を最終的に検出します。
広告2:このステートメントは確かに真実ですが、ここでも、あなたが述べるのとは異なる理由があります。
もし L2 再帰的であり、次のプログラムは計算可能であり、 L1:
decide1(w) = {
w1 = enumerate1(1)
if ( w == w1 ) }
return true
}
else {
return decider2(w1#w)
}
}
もし w=w1、私たちは明らかに持っています w∈L1そして、プログラムは正しく決定します。もしw∈L1∖{w1}、あります i>1 そのような wi=w、 したがって w1#w∈L2; 逆に、w∉L1、 そのようなはありません i したがって w1#w∉L2。プログラムは、すべての場合に正しく判断します。