回答:
対角化のため。場合からのすべての合計計算関数の計算列挙たNにN毎ように、Fのeは合計し、次いで、G (I )= fをI(I )+ 1は、全計算可能であろう関数ですが、列挙には含まれません。これは、シーケンスに関する仮定と矛盾します。したがって、計算可能な関数の列挙は、計算可能な関数の合計だけで構成することはできません。
私たちはユニバーサル計算機能を考えると仮定し「ユニバーサル」手段、hは計算バイナリ関数であり、それはすべての合計計算単項関数のためにF (N )いくつか存在している電子、その結果、F (I )= H (e 、i )すべてのiに対して。次に、g (n )= h (e 、n )のようなeも必要です。前の段落のため、合計関数ではありません。それ以外の場合、はすべての計算可能な単項関数をすべて含む、計算可能な単項関数の計算可能な列挙を提供します。
したがって、すべての機能が機能のシステムであるという要件は、そのシステムに普遍的な機能が存在することと互換性がありません。原始的な再帰関数などの一部の弱いシステムでは、すべての関数が合計されますが、普遍的な関数はありません。チューリングの計算可能性などの普遍的な機能を備えたより強力なシステムは、普遍的な機能が存在できるようにするために、単に部分的な機能を持たなければなりません。
明確にするために、数学関数(関数と呼んでいますが、数え切れないほど多くの関数があるため、それらはすべて列挙可能ではありません)と書くことができる関数を区別する必要があります:プログラムまたは計算可能な関数と呼びます。
有限セットのすべての要素でプログラムを実行し、すべてが終了した場合に「yes」を返すインタープリターを作成できるため、有限セットの合計であるすべてのプログラムのセットは列挙可能です。(ただし、それらのいずれかが表示されない場合は表示できません)
あなたの教授は、あなたが無限の数の要素でプログラムを実行することはできないので、無限の集合の合計であるすべてのプログラムの集合は列挙できないと言いました。
しかし、これはこれが悪いという意味ではありません。
例えば、セットがあるすべてのプログラムならば証明可能合計は、列挙あなたがすべての証拠を列挙し、機械的に、彼らはあなたのプログラムが合計であることを証明かどうかを確認することができますので。
列挙可能なセットでさえ実用的ではありません。プロシージャが1日で終了するかどうかを確認せずに永遠に待たなければならない場合があるためです。すべての合計機能を列挙するプログラムの使用方法がわかりません...
あなたが書いたすべてのものが静的型付けだけで終了することが保証されているいくつかのプログラミング言語があります!多項式限界を保証するものもあります。今のところほとんどがアカデミックです。それらを書くと、おそらくPythonで書くよりも制約を感じるでしょうが、これに取り組んでいる多くの研究者がいます。
だからあなたの質問に答えるために:ある意味では、はい。チューリング完全(現時点では最高の計算能力)であるためには、潜在的な非終端が必要です。しかし、これは、合計関数が列挙可能かどうかに直接関係しているとは思いません。あなたはまだすべての合計プログラムを書くことができます!