次のブール関数があるとします。
def Bottom():
return False
def implies(var1, var2):
if var1 == True and var2 == False: return False
return True
def land(var1, var2):
return var1 == True and var2 == True.
これらの3つの関数を入力として受け取り、最初の2つの関数のどの(おそらく複数のアプリケーションの)関数構成が、3番目のブール(T、F)入力ごとに3番目の関数の出力と一致するかを決定する効率的なアルゴリズムはありますか?働き?
私はPythonを使用して例を記述していますが、ソリューションをPythonやその他のプログラミング言語に制限しているわけではありません。実際、私は実際にコードを探しているのではなく、アルゴリズムの説明や、アルゴリズムが存在しない理由の説明を探しています。
ちなみに、このアルゴリズムを発見しようとした私の動機は、特定の論理接続詞のセットの機能的完全性を示すように求められたためです。これは、1つの論理接続詞が他の特定のセットによってエミュレートできることを示すことによって行います。ロジックについては、少し推測して確認する必要がありますが、可能性の広い空間を線形探索せずに、プログラムでそれをキャプチャする方法を見つけることができませんでした。