問題タブ [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.

0 投票する
1 に答える
469 参照

clojure - Clojure.logic と The Reasoned Schemer の違い

Clojure.logic を使用してThe Reasoned Schemer (TRS)に取り組み、ここに記載されている相違点に注意を払いました。チャプター 3 のフレーム 24 に到達しました。TRS は次のことを報告しています。

生成する必要があります

今、私は `lolo as を実装しました

次の奇妙な結果が生成されます。

これは基本的に、私のloloが新しい変数を漏らしているソリューションを生成していることを意味します. パターンを見ようとして続けていれば、

しかし、霧の中で十分にはっきりと見ることができません。これに光を当てていただければ幸いです。それは私のloloのバグですか?clojure.logic のバグですか? TRS のソルバーと clojure.logic のソルバーの違いは合理的ですか? 結果をどのように解釈または使用できますか? どうすれば clojure.logic の結果を頭の中で予測できますか?

0 投票する
2 に答える
193 参照

python - pyDatalog: クエリを要求するときに「オブジェクトはクエリされたクラスと互換性がありません」

私は、pyDatalog を使用して sqlite データベースを照会するプログラムに取り組んでいます。データベースのキー テーブルは Event で、次のように定義されています。

その後、各イベントは詳細テーブルを参照して詳細情報を表示します。

私ができるようにしたいのは、シーケンス内の各イベントに対して一連のクエリを実行することです。ルールセットは、pyDatalog.load() を使用して外部ファイルからロードされます。

私が問題を抱えている部分は、各イベント ID への参照を Python からデータログに渡すことです。「TypeError: オブジェクトは照会されたクラスと互換性がありません」というエラーが表示され続けます。

デバッグのために、ルールを次のように減らしました。

クエリを実行するコードは次のようになります (より大きなクラスの一部)。

「query='parent(bill,X)'」行のコメントを外すと、問題なく動作します ((bill, 'John Adams') タプルを出力します) が、「query = 'getEvent(...」行で、上記の最後の行で上記のエラーで失敗し続けます。

このエラーの意味と、イベント ID への参照を pyDatalog に正しく渡す方法を知っている人はいますか?

0 投票する
1 に答える
214 参照

java - 予測ロジックでの Java の使用

前提 (ポイント 7 までは、それらがすべて真実であるか、合理的であるか、適切であると仮定しましょう)

(1) Java は無料で、Swing や Javafx などがあります。

(2) Javaについては、ドキュメントやチュートリアルなどがたくさんあります。

(3) ちょっとしたオントロジーに使いたい - 一階論理推論

(4) プロテジェのことは知っているが、それだけでは十分ではない

(5) 例を挙げてみましょう。

  1. 述語論理言語。

    • フルーツについて話しているふりをしましょう

宣言型言語の疑似コード

公理または類似のもの: ドメインと関数

  1. Java コードでの翻訳

「AがB、Cを拡張する」ためのインターフェースを使用します

(6) プロジェクトのスケッチは次のとおりです。
(6.1) DB またはファイル (おそらく xml ファイルまたは txt。たとえば F1.txt) 「A はクラスです」、「B はサブクラスです」 A」などを集めます(「includeIn(B, A)」などで表します)。
(6.2) 関数述語署名用の別のファイル (F2.txt): "f:Y -> Boolean"、"g:X -> Y" など
(6.3) 事実に関する別のファイル (F3.txt): "x isIn X", "y isIn Y", "f(g(x)) == true AND not(f(y))"
(6.4) (リフレクションによって) F1 を「翻訳」する Java プログラム (J1.jar) .txt および F2.txt を 2 番目の Java プログラム (J2.jar) で使用します。このプログラムでは、ファイル F3.txt を使用して新しいファクトを追加し、古いファクトの一部を削除します。

(7) プロジェクトの比率: 必要に応じて Java コードを変更する代わりに、ファクト (ファイル F3.txt) とルール (F1.txt のドメインまたは F2.txt の述語-関数) を追加する方が簡単です (そうであると思います)。そして、多くのライブラリ、IDE、GUI ツールなどとしての Java。

(8) 同様のトピックと質問 (明らかに私のニーズには不十分です):

質問 (2 つ):

そのようなトピックの名前や、別のパラダイムの OO 言語を混合した方法で使用するプログラミング方法はありますか (オントロジーhttp://protegewiki.stanford.edu/wiki/Main_Pagehttp://www. w3.org/TR/owl-features/、説明ロジックと宣言型プログラミング)?

それは間違ったアプローチだと思いますか?

どうもありがとう

0 投票する
1 に答える
250 参照

prolog - Prolog のセットを使用した制約ロジック プログラミング

clpfd は、SWI Prolog の整数に対する制約プログラミング ライブラリです。セット用の同様のライブラリはありますか? そうでない場合、そのようなライブラリを実装するのに役立つ記事を知っていますか?

それはまったく実行可能ですか?私のグーグルは興味のあるものを何も返さなかったので、私は本当にあらゆる種類の入力を探しています。

編集: 検索時に引用符を使用すると、より良い結果が得られます (doh!)。うーん... とにかくフィードバックをいただけてうれしいです。

編集:これを正確に行うB-Prolog(clpset)に含まれるライブラリがあります。

0 投票する
2 に答える
235 参照

prolog - 制約ロジック プログラムのモデリング (解析用)

オブジェクト指向プログラムは、Automata、Process Algebras、Petri Nets、UML などのさまざまなモデルによってモデル化できます。これらのモデルの一部を使用して、さまざまな種類の分析を実行し、パフォーマンスまたは設計の問題を特定できます。

私は論理プログラミングについて勉強していますが、CLP にそのような種類のモデルがあるのだろうか? CLP プログラムの分析はどのように行いますか?

0 投票する
1 に答える
149 参照

logic-programming - Answer set programming getting length of series as input

I am new at Answer Set Programming and trying to encode a problem into ASP. I think it is a simple question. Here is the code;

As you see, there is a sequence which consists of events. In this case its length is 3. However I want it to be decided by the user. For example;

  • If the user wants it to be length 3, then

gringo asp.lp --const n=3 | clasp

code should be look like;

  • If the user wants it to be length 4, then

gringo asp.lp --const n=4 | clasp

code should be look like;

How could I do that? Thanks,

0 投票する
1 に答える
326 参照

logic-programming - PyDatalog: 回答の値のリスト

PyDatalog では、次のアサーションを定義しました。

そして、A から D に到達する方法があるかどうかをデータベースに問い合わせたいと思います。次のコードは、方法がある場合は set([()]) に応答し、ない場合は None に応答するため、機能するはずです。しかし、Zのさまざまな評価の結果は得られません。たとえば、ABCDなどのルートも知りたいです。

バインドされていない値を試してみましたが、最初の反復の結果しか得られません。

問題は、最初の繰り返しで P しかかからないことだと思います。または、集計関数を使用する必要がありますか? concat の使い方がよくわかりません...

前もって感謝します。