Witam
Przepisałem ten kod z książki Mulawka, Systemy ekspertowe, chciałem odpalić w prologu ale cały czas wyskakuje mi błąd, proszę o rzucenie okiem na ten kod. Błąd jaki mi wyskakuje to:
zwierzeta.pl Syntax error: operator_expected
zwierzeta.pl Singleton variables: [X,Y]
zwierzeta.pl Full stop in cause-body? cannot redefine, /2
Z góry bardzo dziękuje za pomoc.
/*modol 1*/
database
xpozytywne(symbol, symbol)
xnegatywne(symbol, symbol)
/*modol 2*/
predicates
zwierze_jest(symbol)
jest_to(symbol)
pytaj(symbol, symbol, symbol)
pamietaj(symbol, symbol,symbol)
pozytywne(symbol, symbol)
negatywne(symbol, symbol)
wyczysc_fakty
wykonaj
clauses
/*modol 3 nadanie cech zwierzat*/
zwierze_jest(gepard) :- jest_to(ssak),
jest_to(miesozerny),
pozytywne(ma, brunatny_kolor),
pozytywne(ma, ciemne_plamy).
zwierze_jest(tygrys) :- jest_to(ssak),
jest_to(miesozerny),
pozytywne(ma, brunatny_kolor),
pozytywne(ma, czarne_pasy).
zwierze_jest(zyrafa) :-jest_to(kopytonogi),
pozytywne(ma, dluga_szyja),
pozytywne(ma, dlugie_nogi),
pozytywne(ma, ciemne_plamy).
zwierze_jest(zebra) :- jest_to(kopytonogi),
pozytywne(ma,czarne_pasy).
zwierze_jest(strus) :- jest_to(ptak),
negatywne(czy, lata),
pozytywne(ma, dluga_szyja),
pozytywne(ma, dlugie_nogi),
pozytywne(ma, biale_i_czarne_kolory).
zwierze_jest(pingwin) :- jest_to(ptak),
negatywne(czy, lata),
pozytywne(czy, plywa),
pozytywne(ma,biale_i_czarne_kolory).
zwierze_jest(albatros) :- jest_to(ptak),
pozytywne(czy, lata_dobrze).
jest_to(ssak) :- pozytywne(ma, siersc).
jest_to(ssak) :- pozytywne(czy, daje_mleko).
jest_to(ptak) :- pozytywne(ma, piora).
jest_to(ptak) :- pozytywne(czy, lata),
pozytywne(czy,znosi_jajka).
jest_to(miesozerny) :- pozytywne(czy, je_mieso).
jest_to(miesozerny) :-
pozytywne(ma, ostre_zeby),
pozytywne(ma, pazury),
pozytywne(ma, wysuniere_do_przodu_oczy).
jest_to(kopytonogi) :-
jest_to(ssak), pozytywne(ma, kopyta).
jest_to(kopytonogi) :-
jest_to(ssak), pozytywne(czy, przezuwa_pokarm).
/*mofol 4 zapytanie*/
pozytywne(X,Y) :-
xpozytywne(X,Y), !.
pozytywne(X, Y) :-
not(xnegatywne(X,Y)),
pytaj(X,Y, tak).
negatywne(X,Y) :-
xnegatywne(X,Y),!.
negatywne(X, Y) :-
not(xpozytywne(X, Y)),
pytaj(X,Y, nie).
pytaj(X, Y, tak) :-
!, write(X, "to_zwierze ", Y," ?"," (t/n)", '\n').
readLn(Reply),
frontchar(Reply, 't', _),
pamietaj(X, Y, tak).
pytaj(X, Y, nie) :-
!, write(X, "to_zwierze ", Y," ?"," (t/n)", '\n'),
readLn(Reply),
frontchar(Reply, 'n', _),
pamietaj(X,Y, nie).
pamietaj(X, Y, tak) :- assertz(xpozytywne(X,Y)).
pamietaj(X, Y, nie) :- assertz(xnegatywne(X,Y)).
wyczysc_fakty :-
write("\n\nPrzycisnij spacje aby wyjsc\n"),
retractall(_ , dbasedom), readchar(_).
wykonaj :-
zwierze_jest(X), !,
write("\n Twoim zwierzeciem moze byc" , X),
nl, nl, wyczysc_fakty.
wykonaj :-
write("\nNie jestem w stanie odgadnac, "),
write("jakie zwierze masz na mysli. \n\n"), wyczysc_fakty.