単純なロジック ソルバーのプログラミングに 1 ~ 2 週間を費やしました。それを構築した後、私はそれが解決する言語がチューリング完全であるかどうか疑問に思っていました。そこで、SKI コンビネーター計算で有効な式をすべて受け入れ、その式の正規形を含む結果セットを生成する小さな一連の方程式をコード化しました。SKIはチューリング完全であるため、私の言語が SKI を実行できることを証明することは、そのチューリング完全性を実証することになります。
ただし、不具合があります。ソルバーは通常の順序で式を縮約しません。実際に行うことは、考えられるすべての削減順序を試すことです。これは、ソリューション セットが通常巨大であることを意味します。正規形があればどこかにあるのですが、どこにあるのかわかりにくいです。
これは私に2つの質問をもたらします:
私の言語はチューリング完全ですか? それとも、より良い証拠を見つける必要がありますか?
解の数は入力の計算可能な関数ですか?
(最初は、解集合のサイズは入力サイズの指数または階乗であると想定していました。しかし、よく調べてみると、これは正しくありません。すでに正規形になっている巨大な式と、終了しない小さな式を書くことができます。解集合のサイズを決定することは、停止問題を解くことと同等かもしれないと感じていますが、完全にはわかりません...)