プログラム反転という用語に は複数の意味がありますが、おそらく、J。マッカーシーの1956年の著作「 AIのコンテキストでチューリングマシンによって定義された関数の反転」から始まりました。これまでに、プログラムの反転と他のフィールドとの間の多くの関係が発見されました。たとえば、可逆プログラミング(物理的および論理的)、部分評価、検証、双方向プログラミング、論理プログラミング、機械学習などです。
プログラム反転とは何ですか?最初の近似では、のようなもの:プログラムを考えると型の引数を取る し、型の結果を返す、プログラム生成「何とか」の逆である。概念はさまざまな方法で明確にできるため(そして現在もそうです)、ここでは意図的にあいまいにしています。たとえば、は単射である必要がありますか?SHOULD 、すべてを返すか、単にいくつかのように?
プログラムを逆にする一般的な方法があります。たとえば、すでにマッカーシーによって指摘されている対角化を使用したり、部分評価を使用したりしますが、効率的ではない傾向があります。また、私が精通しているプログラムの反転に関するほとんどの作業は、完全な高次のプログラミング言語(つまり -calculi)を扱っていないようです。
参照リクエスト。 -calculiのプログラム反転のための明示的なアルゴリズムの最先端技術とは何ですか(高次数に制限はありません)?