問題タブ [prolog-defaulty]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
prolog - プロローグは、他の句がない場合にのみアクティブになるすべての句をキャッチします
様相論理式をその負の正規形に関連付ける述語があります。様相演算子、接続詞、および論理和を除くすべての接続詞は削除され、否定は可能な限り式のリーフに押し込まれます。
✱述語には、テキスト上は lastrewrite/2
であるキャッチオール句rewrite(A, A).
があります。このキャッチオール句を使用すると、式を否定された正規形で抽出できます。この例では、 はŁukasiewicz 記法のような二条件接続詞であり、とは様相論理の変数 (つまり Prolog 定数) です。e
4
7
Z
負の正規形の式で統一されます。
ただし、rewrite(<some constant>, <some constant>)
常に成功し、成功しないようにしたいと思います。キャッチオール句は、別の句が適用可能な場合に発生する可能性があるものではなく、キャッチオールであるべきです。
rewrite(A, A).
を保護されたバージョンに置き換えてみました:
これにより、 A が特別な意味を持つアトム/コンストラクターによって先頭にない場合にのみ、キャッチオール句が適用されなくなると思いました。ただし、その変更を行った後、rewrite
再帰的に呼び出すと、常に失敗します。
キャッチオール句を設定する正しい方法は何ですか?
✱ 参考のためのプログラムの全文:
prolog - Prolog の書き方 - 基本的な演算子の定義?
私はPrologにかなり慣れていないので、次のように動作する述語を作成したいと考えています
これはやっている: 1 + (4 - 1) = 4
私は述語に精通していますが、add//2 述語/演算子を記述できるという点でどこから始めればよいかわかりません。
どんな助けや提案も大歓迎です。