Poniżej zaprezentowano przykładowy diagnostyczny system ekspercki zaimplementowany w jeżyku TURBO PROLOG. System przeznaczony jest do diagnozowania przyczyn występowania awarii pojazdów samochodowych.
System przedstawiono w trzech postaciach, będących kolejnymi jego rozwi* nięciami:
— prosty system ekspercki, którego maszyna wnioskująca wykorzystuje wnioskowanie zstępujące (wersja 1);
— system uzupełniony o prosty interfejs komunikacji z użytkownikiem (wersja 2);
— system uzupełniohy dodatkowo o dynamiczne struktury danych zawierające bazę faktów (wersja 3).
WERSJA 1
/*
AUTOMOTIVE DIAGNOSTIC SYSTEM (SIMPLE SYSTEM)
Type RUN in response,to the GOAL prompt atruntime ........................- - - - - - ------------
predicates . i
run
diagnosea (symbol) battery_connections (symbol) battery_charged (symbol) battery_water (symbol) starter_motor (symbol) engine_turns_over (symbol) relay(symbol) spark (symbol)
clauses
run:-diagnosed(X), !,write("Check ", X),nl. run:-write("\. \n").
/* Set this parameter false if barrety's water level is Iow. */
battery_water (true).
/* Set this parameter false if battery cormectio.ns are poor */
ba'ttery_connections (true) .
/* Set this parameter false if headlights are dim. */ battery_ęharged (false).
/* Set this parameter false if starter motor turns with a grinding sound. */ starter_motor (true).
/* Set this parameter false if starter motor relay does not puli in, even if the starter motor does not turn over. */ relay (true).
/* Set this parameters false if motor does not turns over * /
i
engine_turns_over (false).
/* Set this parameter false if pług or distributor connection are bad. */ spark (true).
diagnosed (starter_motor) if.. engine_turns_over(false) and battery_charged(true) and relay(true) and starter_motor(false).
diagnosed (battery_connections) if engine_turns_over(false) and battery_charged(true) and battery_connections(false).
75