解像度定理証明ではなく、最小論理の観点から後向き連鎖と前向き連鎖の両方を説明しましょう。通常の後向き連鎖プロローグ規則は、最小限の論理の左含意導入規則の適用と見なすことができます。したがって、基本的に、目標PとルールA-> Pがある場合、結合された推論規則は、目標Pを目標Aに置き換える可能性があることを示しています。
-------- (Id)
P |- P G, A -> P |- A
--------------------------------- (Left ->)
G, A -> P |- P
同じルールを使用して、前向き連鎖アプリケーションをモデル化できるようになりました。今回はゴールPはありませんが、代わりに条件Aが前提で実現されています。ルールA->Pがある場合、このルールは、ヘッドPも実体化することを許可します。結合された推論規則は次のようになります。
------- (Id)
A |- A G, A, A -> P, P |- B
--------------------------------------- (Left ->)
G, A, A -> P |- B
私たちの小さなプログラムのアイデアは、前向き連鎖プロセスの不動点F(M)=Mを完全に計算することです。私たちが行うことは、反復M0、M1、M2などを計算することです。これは、プロセスが有限の結果で終了した場合にのみ機能します。演繹データベースから、Mn+1とMnの間のデルタのみを計算するというアイデアを採用しました。比較的少ない労力でF(Mn)\ Mn = G(Mn \ Mn-1、Mn-1)となるように、Gを見つけることができます。
重複は現在排除されていないため、Gの現在の実装は循環データでつまずく可能性があります。ファクトの削除も可能にするフォワードチェーンでは、特別なフォワードルールを使用して重複を排除できます。本格的な前向き連鎖システムは、とにかく事実の除去を可能にするはずであり、それからそれらは制約解決システムを実装するためにさえ使用することができます。
しかし、今のところ、単純なアイデアとそれに対応する単純なコードを残してみましょう。
F関数(元のルール)からのG関数(delta / 2)
http://www.xlog.ch/jekejeke/forward/delta.p
前向き連鎖を備えた玩具エキスパートシステム
http://www.xlog.ch/jekejeke/forward/expert.p