推論エンジン
推論エンジンの制御はデータ格納部の状態を頻繁に評価することに基づいており、静的なプログラムの制御構造には依存しない。このような処理を「データ駆動」あるいは「パターン誘導」と言い、一般的な手続き的制御と対比される。規則はデータを介してのみ相互にやり取りが発生するのであって、一般的なプログラミング言語では手続きや関数は明示的に互いに呼び出しあう。命令とは異なり、規則は逐次的に実行されず、規則群だけを見てもどれが次に実行されるかは分からず、推論エンジンがいつ停止するかもわからない。
手続き的処理では、問題領域についての知識は制御構造の中に命令としてちりばめられるが、推論エンジンでは知識(規則)と制御(推論エンジン)がより明確に分離されている。オブジェクト指向プログラミングは、それらの中間レベルの分離がなされていると言える。
人工知能の中では、この選択戦略をアレン・ニューウェルの Unified theory of cognition に倣ってヒューリスティックスと呼ぶことが多い。
例えば OPS5 では、プログラマは2つの衝突の解決戦略のいずれかを選択可能である。LEX 戦略はインスタンスをデータに付与された時刻タグが現在時刻に近い順に並べる。すなわち、最近実行した規則にマッチしたデータを持つインスタンスが高い優先順位となる。この順序付けではさらに、規則の条件部の複雑さによってソートする。MEA 戦略は、規則の最初の条件にマッチするワーキングメモリ要素の新しさを重視する(特に手段目標解析でよく使われるヒューリスティック)。
さらに選択したインスタンスが第三段階に渡され、その規則が実行される。推論エンジンは選択された規則をインスタンス内のデータを引数として実行(あるいは発火)する。一般に規則の右辺にあるアクションはデータ格納部を変化させるが、それ以外に推論エンジン外の処理を変化させる場合もある(ユーザーとやり取りしたり、外部プログラムを呼び出したりなど)。データ格納部は一般に規則の実行によって更新されるので、次のサイクルでデータにマッチする規則の集合は変化する。
以上の段階を経て、推論エンジンは次のサイクルの第一段階を開始可能な状態となる。このようなサイクルを「認知-行動サイクル」と呼ぶ。推論エンジンの停止条件としては、指定された回数のサイクルを実行したか、ユーザーが停止を要求したか、サイクルの第一段階でマッチする規則が無い状態になった場合がある。