1

プロローグで推論エンジンを構築しようとしています。

たとえば、ここにいくつかのルールがあります

R1 : A and B -> C
R2 : E and F -> D
R3 : G and T -> H

こういうのやりたかった

c :- a,b
d :- e,f
h :- g,t

しかし、次のように定義された述語「rule/1」を使用する必要があります

rule(Ri) :- "if conditions then conclusions".

例えば ​​:

rule(r1) :- "if a and b then c".

どのようにできるのか ?

4

1 に答える 1

2

私は解決策を見つけました:

:- dynamic if/1, then/1.
rule(r1) :- if([a,b]),then([c]).
rule(r2) :- if([e,f]),then([d]).
rule(r3) :- if([g,t]),then([h]).

次に、次のように述語を使用clause/2してルールを反復処理します。

clause(rule(R),(if(X),then(Y))).
于 2014-12-24T13:16:08.660 に答える