問題タブ [logic-programming]
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.
logic-programming - pyDatalog を使用して、すべてのデータ依存関係が満たされているかどうかを確認できますか?
pyDatalogを使用して、さまざまな機能の依存関係が満たされているかどうかを判断しようとしています。一部のライブラリ (lA、lB、...) は、機能 (fX、fY、...) に必要な出力 (1、2、...) を提供します。
例えば:
pyDatalog グラフ チュートリアルを使用すると、機能に必要な出力を少なくとも 1 つ提供するライブラリを見つけることができます。
これは [('lA',), ('lB',)] を返します。機能へのパスが少なくとも 1 つあるライブラリを見つけているだけだからです。
pyDatalog を使用して、その機能のすべてのニーズを満たすライブラリのみを返す良い方法はありますか?
logic - 不動点と証明理論
任意の論理プログラムについて、その証明理論は SLD (Selective Linear Definite) 解決を使用してクエリの充足可能性を見つけます。同じ論理プログラムに対して、不動点定理を適用してモデルを見つけることができます。
私の質問は、
論理プログラムの不動点を証明理論やモデル理論として考えるべきか、それともどちらでもないのか?
parsing - Prolog の差分リストを使用したこの文脈自由文法はどのように機能していますか?
Prolog の文脈自由文法に関するこのチュートリアルを読んでいます。ページの下部で、Prolog の文脈自由文法を差分リストを使用して実装することに言及しており、次のコード ブロックが含まれています。
それは言及しています:
これらのルールを慎重に検討してください。たとえば、 s ルールは次のように述べています。 (1) X を消費して Y を残すことができ、 X と Y のペアが名詞句を表し、(2)次に、Z を残して Y を消費することができます。ペア YZ は動詞句を表します。np ルールと 2 番目の vp ルールは同様に機能します。
と
最初のリストは消費する必要があるもの (または必要に応じて入力リスト) と考え、2 番目のリストは残すもの (または出力リスト) と考えてください。この(むしろ手続き的な)観点から見ると、違いのリスト
は、女性が男性を撃つ文を表しています。なぜなら、次のように書かれているからです。左側のすべての記号を消費し、右側の記号を残す場合、私は興味のある文を持っています。つまり、私たちが興味を持っている文です。は、これら 2 つのリストの内容の違いです。
レコグナイザーを書き直すために違いリストについて知っておく必要があるのはこれだけです。何かを消費し、何かを置き去りにするという考えを単純に心に留めると、次の認識子が得られます。
説明として、しかし、それは私にこのコードを明確にするために何もしていません. を使用するよりも効率的であることは理解していますappend/3
が、ものを消費して他のものを置き去りにするという概念に関しては、以前のappend/3
実装よりもはるかに混乱しているようで、頭も尻尾もできません。さらに、そのコードをコピーしてProlog ビジュアライザーに貼り付けて理解しようとすると、ビジュアライザーにエラーがあると表示されます。誰かがこれに光を当てることができますか?
prolog - ダイクストラ パス (距離だけでなく)
ダイクストラ パスの最小距離を計算するコードがあります。最小距離だけでなく、フル パスも出力するためにコードを編集するのを手伝ってもらえますか?
ありがとう!
編集: 近傍述語とエッジ述語を追加するのを忘れたため、コードを編集しました。
prolog - プロローグの組み合わせ論
次のように、9 文字を 3 つのチームに分割するなど、すべての可能性を生成する方法はありますか。
- 1軍:2文字
- 2軍:3文字
- 3チーム目:4文字
- ?
例:
次世代は、組み合わせがなくなるまで、次の組み合わせにする必要があります。
bash - SWI Prolog は、コマンド ライン引数を介してゼロ以外のアリティを持つゴールを渡します
SWI Prolog では、次のようにゼロ以外のアリティでトップ レベルの前にゴールを実行できます。
ただし、アリティがゼロでない述語が次のように指定されている場合
エラーが発生します
トップ レベルの前にゼロ以外のアリティ述語をゴールとして渡すにはどうすればよいですか?
prolog - リストの要素に対する Prolog XOR
私はPrologが初めてで、長さnの指定されたリストの要素にXOR演算を適用したいと考えています. リストの最初の n-1 要素に false 要素が含まれている場合、または最後の要素が True である場合、述語は True を返す必要があります。
これまでに以下のコードを書いたのですが、クエリ ?- function([true,false,false]) などで述語が True を返すはずなのに false を返すなど、うまく動作しません。
助けていただければ幸いです。ありがとう!
prolog - 完全に宣言的なホーン ロジックを実装する方法は?
完全宣言型ホーン ロジック(または完全宣言型プロローグ)と呼ばれるもので、いくつかの知識を形式化し、クエリを実行したいと考えています。誰かがそれを実装する方法に関するガイドラインを提供できますか? 上記のリンクからの詳細な説明を簡単に要約します。
正式な言語は、Prolog (のコア) のものです。「プログラム」は、Prolog と同様に、規則と事実のセットです (関数と変数を含み、基本的にはユーザー定義の述語のみを含みます)。
ただし、Prolog とは対照的に、論理プログラムの標準的な宣言的セマンティクスに関して健全で完全な実装、つまり最小の Herbrand モデル (帰納的に定義された基本用語のセット) を探しています。論理プログラミングの理論的研究では、これは通常研究の対象であり、たとえば、次の条件:
- マッチング ルールの公平な検索 (たとえば、Prolog の深さ優先検索は公平ではありません)。
- "発生チェック" による統一 (変数が統一された項に出現しないことを確認する)。
車輪を発明するのではなく、既存の機能に基づいて構築される簡潔な実装を探しています。私が見ているより有望な方向性の 2 つは、Prolog のメタインタープリターとして、または何らかの定理証明の一部として実装することです。これらの分野で実際的な知識を持っている人は、それを実装する方法に関するガイドラインを提供できますか? miniKanrenで簡単に実装できますか?
私の意図は、一部の知識を完全に宣言的な方法で形式化することです。このような形式化の重要な特徴は、それが (単調な) 帰納法の数学的概念に正確に対応しているため、知識とその特性を帰納的な議論で簡単に推論できることです。