Prolog と Logic Programming に関する短い記事を読みました。論理プログラムで代数ができるかどうか興味があります。式 5+X = 7 で X の変数が何であるかを尋ねて、-2 の答えを得ることができますか?
4 に答える
すべての本格的なPrologシステムは、CLP(FD)と呼ばれる有限領域での制約論理プログラミングを提供します。これにより、このような方程式の多くを簡単に解くことができます。たとえば、SICStus Prolog、SWI、およびYapの場合:
?- use_module(library(clpfd)).
true.
?- 5+X #= 7.
X = 2.
どうやら、答えは-2ではなく2です。また、library(clpq)を使用した有理数など、他のドメインでの制約論理プログラミングも確認してください。
はい、Prolog は代数を実行できます。
PrologとCAS (コンピュータ代数システム)を Googleで検索すると、多くの結果が得られます。
Prolog =構文統一+後方連鎖+ REPLということを理解していれば、
次に、問題/方程式を解く中心となるのは統一であることを理解すると、等号 (=) を含む問題を解くために使用される等式推論に出くわす可能性があります。これと同じロジックは、自動化された定理証明者と証明アシスタントでも使用されます。
ここを見ると、この自動化された定理証明器で統合と後方連鎖を実装するprolog.mlが見つかります。
また、用語の書き換えを確認し、Google で「用語の書き換え」を検索して、用語を使用して方程式を解く科学について詳しく学ぶ必要があります。
これはどう?これは に対してのみ機能することに注意してくださいX+Y=Z
。
equation(X,Y,Z):- var(X),X is Z-Y.
equation(X,Y,Z):- var(Y),Y is Z-X.
equation(X,Y,Z):- var(Z),Z is X+Y.
質問できるよ:
equation(5,X,7).
X = 2 .
?- equation(2,5,X).
X = 7.
?- equation(X,5,7).
X = 2