私はPrologとLogical Programmingについて簡単な記事を読んでいます。私は論理プログラムが代数を行うことができるかどうか不思議です。同様に、あなたはXの変数が式5 + X = 7にあり、-2の答えを得ているかを尋ねることができますか?論理プログラムが代数を行うことができるかどうか不思議です
答えて
これはいかがですか?これはX+Y=Z
でのみ有効です。 、短いのためのCLP(FD)と呼ばれる、
equation(5,X,7).
X = 2 .
?- equation(2,5,X).
X = 7.
?- equation(X,5,7).
X = 2
すべての深刻なPrologシステムは、有限領域上の制約論理プログラミングを提供すると、あなたは簡単に多くのそのような方程式を解くことができます。
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.
あなたは尋ねることができます。たとえば、SICStus Prolog、SWI、およびYapの場合:
?- use_module(library(clpfd)).
true.
?- 5+X #= 7.
X = 2.
明らかに、答えは-2ではなく2です。また、ライブラリ(clpq)付きのrationalalsのような他のドメイン上の制約ロジックプログラミングもチェックしてください。
はい、Prologは代数を行うことができます。
PrologとCAS(コンピュータ代数システム)のGoogleでは、多くの結果が得られます。
あなたは+ REPL = Syntactic unification + backward-chainingプロローグ、
が、それは問題/方程式を解くの心臓部である統一であることを認識し、あなたが解決するために使用される等式推論に実行することを理解していれば等号(=)を含む問題。この同じロジックはautomated theorem proversとproof assistantsでも使用されます。
hereを見ると、この自動定理証明者で統一と後方連鎖を実装するprolog.mlが見つかります。
また、term rewritingをチェックして、用語の書き換えをGoogleで検索して、用語を使って方程式を解く科学を学ぶ必要があります。
非常に良いポインタ!より多くの情報を提供する前に、それらの概念を簡単に要約することができれば、あなたの答えはさらに有用になります。 – crackjack
- 1. Python:プロセス内のスレッドでキュー処理を行う不思議
- 2. このような何かがうまくいかない理由だけで不思議新しいstdClassの
- 3. これを実行する最良の方法であるかどうか不思議です。テーブルビュースイッチングセルサイズ
- 4. どうすれば論理ベクトルを作ることができますか
- 5. 代理人は不変ですが、どうですか?
- 6. Linuxソケットプログラミングで不思議なことが起こった
- 7. Reppyが特定のエントリで不思議に振る舞う
- 8. クッキーが不思議に再現する理由は何ですか?
- 9. 不思議な空ですか?
- 10. MATCHで論理和をとることができますか?
- 11. ARM Linux実行ファイルがx86_64で不思議に動作する
- 12. うるう年の論理論理:かっこを含むか?
- 13. のContextMenuは誰もこれを助けることができるかどうかだけで不思議GridViewの
- 14. アニメーションでJQuery関数が不思議に動作する
- 15. バッチ:私は予想通り、このコードが動作しない理由を不思議に思う
- 16. 不思議な数字188888888888888
- 17. 不思議なことにzlibのuncompress()がZ_BUF_ERRORを返す
- 18. Visual Studioデバッガは不思議に使用できませんか?どうすれば元に戻すことができますか?
- 19. 不思議なこと:後のCSSルール
- 20. スパンド付き不思議Nullpointer
- 21. これをCSSファイルでオンラインで見て、何や理由が不思議ですか?
- 22. 不思議なパディングが私のデザインを破る理由は?
- 23. ネットワークデバッガで不思議な線
- 24. Xcodeでxliffファイルをエクスポートするのが不思議です
- 25. JSCL - なぜこの不思議なエラーですか?
- 26. 素数にはこれとは違う論理ですか?
- 27. urllib.requestからHTTPServerへの多数の同時要求を行うときの不思議な例外
- 28. リモートプロセスが不思議に殺される
- 29. なぜブール論理をバイト単位で行うことができないのですか? C#(3.5)では
- 30. My ElasticSearch Indexesが不思議に削除されました。どのようにデバッグするのですか?
非線形方程式(時には)で動作するアプローチについては、[最適化](http://stackoverflow.com/questions/37142066/optimisation-in-swi-prolog)を参照してください。 – mat
[Prologの式簡略化]の実装があります(http://cmu-ai-mirror.bvulpes.com/afs/cs/project/ai-repository/ai/lang/prolog/code/math/algebra/ 0.html)。また、私はPrologの[Knuth-Bendix完了アルゴリズム](https://github.com/nick8325/completion)のより最近の実装を発見しました。 –