LogicBlox で「暗黙の」ロジックをエンコードしたいと考えています。私は述語を持っています:
Number(n),hasNumberName(n:i)->int(i).
isTrue[n] = i -> Number(n), boolean(i).
そして、その述語にいくつかのデータを追加します。
+Number(1).
ここで、数字 2 と数字 3 を作成し、この論理規則に従ってこれら 2 つの数字の真理値を作成します。
isTrue[1] が true の場合、isTrue[2] が true または isTrue[3] が true です。(isTrue[1] は (isTrue[2] または isTrue[3]) を意味します)
だから私は述語を作成します:
implies[n1,n2,n3] = e -> Number(n1), Number(n2), Number(n3),boolean(e).
次に、次のようなルールを作成しようとします。
isTrue[n2] = true;isTrue[n3] = true <- isTrue[n1] = true,implies[n1,n2,n3] = true.
しかし、LogicBlox レポート:「エラー: 論理和は、ルールの先頭ではサポートされていません」
では、これをエンコードして LogicBlox のロジックを暗示するにはどうすればよいでしょうか?