Zhrnuté viaceré odpovede k produkčnému systému

Pravidlo má tvar: AK <podmienka> POTOM <dôsledok>
Pripomína teda známu programovú konštrukciu IF–THEN (a v angličtine sa aj tak zvykne zapisovať).
Má veľmi podobný význam: AK je splnená podmienka (t. j. dá sa overiť platnosť podmienky v báze faktov), POTOM je splnený aj dôsledok (to znamená, že dôsledok je tiež platné tvrdenie). Ak podmienka nie je splnená, o dôsledku nevieme vo všeobecnosti nič povedať.
Na rozdiel od programového IF–THEN je však každé pravidlo nezávislé od ostatných. To znamená napríklad, že má vlastné premenné, ktoré nadobúdajú hodnoty nezávisle od premenných v ostatných pravidlách. Tieto premenné nadobúdajú hodnoty len dočasne, práve počas zisťovania, či je pravidlo nejakým spôsobom splnené. (Hovoríme tomu aj naväzovanie hodnôt na premenné – value binding).

Tu je dôležité si uvedomiť, že FAKT je nejaké tvrdenie, nejaká veta, o ktorej vieme povedať, či je pravdivá alebo nepravdivá (splnená alebo nesplnená).
Majme dva príklady:
Jano a Eva sú manželia. 
Igor je muž. 
Ak sú tieto príklady v báze faktov, tvoria nejaký svet a my môžeme zisťovať, či sú nejaké iné fakty (vety) v tomto svete pravdivé (splnené).
Fakt: Peter je muž. nie je splnený a teda ani pravdivý v tom svete, lebo tam žiadny taký fakt nie je.
Fakt: Igor je muž. je splnený a teda aj pravdivý v tom svete, lebo tam taký fakt je.
Fakt: Jano a Eva sú súrodenci. nie je splnený a teda ani pravdivý v tom svete, lebo tam žiadny taký fakt nie je.
Fakt: Jano a Eva sú manželia. je splnený a teda aj pravdivý v tom svete, lebo tam taký fakt je.
Porovnávanie faktov je síce veľmi jednoduché, ale veľa nového sa s tým nedozvieme. Preto pridáme premenné. Ak sa vo fakte nachádza aspoň jedna premenná, nazývame ho VZOR. Môžeme sa teraz opýtať, či sa v našom príklade nachádza nejaký muž. Použijeme na to vzor ?X je muž. Tento vzor je splnený a teda aj pravdivý, lebo existuje špecifický prípad, keď ?X = Igor. Naviazaním hodnoty Igor na premennú ?X dostaneme z vzoru ?X je muž. fakt Igor je muž. A tento fakt sa v našej báze faktov nachádza, preto je aj náš vzor splnený.

Teraz sa vrátime k pravidlám. Pravidlá v zadaní majú tvar:
AK <Vzor> <Vzor> ... POTOM <Akcia> <Akcia> ... 
Pritom <Akcia> zodpovedá PRIDAJ <Vzor> alebo VYMAŽ <Vzor> alebo SPRÁVA <Vzor>
Keď zisťujeme, či je pravidlo splnené, naväzujeme premenné zo vzorov v podmienke tak, aby zodpovedali faktom v báze faktov. Keď sa nám podarí všetky premenné v podmienke vhodne naviazať, tak podmienka bude vyzerať takto:
AK <Fakt1> <Fakt2> ... 
A keď sa všetky tieto fakty nachádzajú v báze faktov, vtedy hovoríme, že pravidlo je splnené.
V dôsledku pravidla sa môžu nachádzať len také premenné, ktoré sa nachádzajú v podmienke. Preto, keď je pravidlo prostredníctvom nejakého naviazania premenných splnené, tak použijeme tieto naviazania aj na dôsledok tohto pravidla a dostaneme napríklad:
POTOM PRIDAJ <Fakt4> PRIDAJ <Fakt5> VYMAŽ <Fakt6> 
A keď toto dostaneme, hovoríme, že máme POTENCIÁLNE APLIKOVATEĽNÚ INŠTANCIU PRAVIDLA. To aplikovateľnú znamená, že je možné vykonať akcie PRIDAJ, VYMAŽ a podobne.
Takýchto inštancií pravidla môže byť viac, keď je viac podobných faktov v báze. Keby sme mali v báze faktov okrem faktu Igor je muž. aj fakty: Peter je muž. a Marian je muž., tak by bol vzor ?X je muž. splnený tromi rôznymi spôsobmi – tromi rôznymi naviazaniami: ?X = Igor, ?X = Peter a ?X = Marian. Ak by bol tento vzor v podmienke nejakého pravidla, mohlo by byť toto pravidlo tiež splnené viacerými spôsobmi – mohlo by mať viacero aplikovateľných inštancií, kde každá inštancia by mala v dôsledku iné fakty, lebo premenná ?X by bola nahradená zakaždým inou hodnotou – raz Igor, potom Peter a nakoniec Marian.

Takže keď pre každé pravidlo zistíme všetky možnosti ako by mohlo byť splnené, dostaneme typicky veľa potenciálne aplikovateľných inštancií pravidiel. Keďže ich je veľa, systém si musí vybrať, ktorú vykoná.
Takže najprv sa zrušia tie, ktoré by nič neurobili. Ak má inštancia pridať fakty, ktoré už v nej sú alebo vymazať fakty, ktoré v báze nie sú, tak je zbytočná – odstránime ju.
Ak sú odstránené úplne všetky inštancie, systém už nemá čo robiť a končí.
Ak aspoň jedna inštancia nejakého pravidla ostala, vezmeme prvú (práve to je naša stratégia riešenia konfliktov) a vykonáme všetky jej akcie, ktoré majú zmysel.
Ostatné inštancie pravidiel zahodíme a ideme odznova hľadať splnené pravidlá nad zmenenou bázou faktov.

Potenciálne aplikovateľné inštancie pravidiel je vidno v príklade produkčného systému v okne Pomocný výstup, keď sa spúšťa inferencia po jednom kroku.

Od produkčného systému sa vyžaduje, aby zahodil väčšinu svojej práce – všetky potenciálne aplikovateľné inštancie pravidiel okrem jedinej, ktorú vykoná. Vo veľmi jednoduchých bázach znalostí, ako je napríklad báza Rodinné vzťahy, je to naozaj mrhanie výkonom. Ale už pri o niečo náročnejších, ako je Faktoriál, je to nevyhnutné, lebo keby sa v každom kroku vykonali všetky inštancie, čo sú k dispozícii, systém by sa zastavil vždy až keď dôjde k infinity. Je to preto, že keď systém nájde riešenie, sú k dispozícii dve inštancie – jedna z pravidla F3 a druhá z F4. F3 vypíše riešenie, ale F4 navrhuje ďalší krok výpočtu. Ak by sme teraz vykonali aj F4, bolo by čo počítať ďalej aj napriek tomu, že sa riešenie už našlo.

Bázam znalostí, ktoré sa pri hľadaní riešenia modifikujú takým spôsobom, že závisí na poradí vykonania pravidiel a pri vykonaní nejakého pravidla sa zrušia podmienky splnenia iného pravidla, sa hovorí nemonotónne. Ak by sme pri nich povolili vykonanie všetkých aktuálne nájdených inštancií pravidiel, nefungovali by korektne a dávali by množstvo zbytočných otázok a nezaujímavých alebo aj nesprávnych riešení.
Takýchto báz znalostí je väčšina – v podstate všetky diagnostické, monitorovacie, predikčné a učiace sa sytémy. Len časť interpretačných systémov (ako je interpretovanie rodinných vzťahov) má monotónnu bázu znalostí, kde na poradí vykonávania pravidiel nezáleží. Takéto systémy sa potom riešia efektívnejšími prístupmi (napríklad RETE algoritmus). Preto od vás vyžadujeme riešenie s vykonaním maximálne jednej inštancie v jednom cykle, ktoré je univerzálne a veľmi časté.