推論エンジン
推論エンジンは、3つの動作段階(規則のマッチング、規則の選択、規則の実行)を持つ有限状態機械として表現できる。
規則のマッチングの段階では、推論エンジンはデータ格納部のその時点の内容を満足する全ての規則を探し出す。規則が典型的な「条件-行動」形式である場合、条件部とワーキングメモリの内容のマッチングをすることを意味する。マッチングが見つかった規則は全て実行候補となり、これらを「衝突集合; conflict set」と呼ぶ。衝突集合では、規則の条件部が複数の事実とマッチした場合、1つの規則が複数回出現することもある。規則とそれにマッチしたデータの部分集合の組合せを、規則のインスタンスと呼ぶ。
多くの場合、データが非常に膨大だったり、要求される性能が厳しいため、衝突集合を求める処理はそれほど単純な問題ではない。初期の推論エンジンの研究では規則とデータのマッチングに関するアルゴリズムの追求が盛んであった。チャールズ・フォーギーが開発したReteアルゴリズムがそのような例として挙げられる。これは OPS5 などのプロダクションシステムで使われた。Daniel P. Miranker は Rete アルゴリズムを改良した TREAT を開発した。これは、関係データベースの最適化技法を取り入れたものである。
衝突集合が得られると、推論エンジンは第二段階として規則選択を行う。この段階では、実際にどの規則を実行すべきかの判断に一種の選択戦略を適用する。この選択戦略はエンジン内にコードとして備わっている場合もあるし、モデルの一部として外部から指定される場合もある。