私は Prolog でコードを書く最初の段階にあり、まだパラダイムに頭を悩ませているので、この質問の原始性を許してください。
ウィキペディアで読んだ
A rule is of the form
Head :- Body.
and is read as "Head is true if Body is true".
それはとても簡単です。そこで、1 ビット加算器の機能をシミュレートするナレッジ ベースを構築しています。
そうすることで、次のルールを作成しようとしています。
ゲート X が存在し、X が AND ゲートであり、X から出力される端子があり、その端子に信号があり、信号が 0 である場合、ゲート X には、信号を持つ少なくとも 1 つの入力端子も必要です。 0の。
プロローグのルールとして、上記の文を反映するためにこれを書きました。
gate(X) /\ gate_type(X, and) /\ terminal(T, X, out) /\ signal(T, SIG) /\ (SIG is 0) :- (gate(X) /\ gate_type(X, and) /\ terminal_type(R, X, in) /\ signal(R, 0)).
私のルールをテストするためt7
に、AND ゲートの端子である端子がありました。
terminal_type(t7, a1, in).
gate_type(a1, and).
Prolog:signal(t7, 1), signal(t8, 1), signal(t9, X).
とか聞くとPrologさんが教えてくれます
X = 1;
X = 0;
私が得る答えは、X = 1 だけです。