I'm doing this expert system for classification animals using prolog and I'm using GNU/Prolog and Debian GNU/Linux.
xpositive(symbol,symbol) xnegative(symbol,symbol) nondeterm animal_is(symbol) nondeterm it_is(symbol) ask(symbol,symbol,symbol) remember(symbol,symbol,symbol) positive(symbol,symbol) negative(symbol,symbol) clear_facts run animal_is(cheetah):- it_is(mammal), it_is(carnivore), positive(has,tawny_color), positive(has,dark_spots). animal_is(tiger):- it_is(mammal), it_is(carnivore), positive(has, tawny_color), positive(has, black_stripes). animal_is(giraffe):- it_is(ungulate), positive(has,long_neck), positive(has,long_legs), positive(has, dark_spots). animal_is(zebra):- it_is(ungulate), positive(has,black_stripes). animal_is(ostrich):- it_is(bird), negative(does,fly), positive(has,long_neck), positive(has,long_legs), positive(has, black_and_white_color). animal_is(penguin):- it_is(bird), negative(does,fly), positive(does,swim), positive(has,black_and_white_color). animal_is(albatross):- it_is(bird),positive(does,fly_well). it_is(mammal):- positive(has,hair). it_is(mammal):- positive(does,give_milk). it_is(bird):- positive(has,feathers). it_is(bird):- positive(does,fly), positive(does,lay_eggs). it_is(carnivore):- positive(does,eat_meat). it_is(carnivore):- positive(has,pointed_teeth), positive(has, claws), positive(has,forward_eyes). it_is(ungulate):- it_is(mammal), positive(has,hooves). it_is(ungulate):- it_is(mammal), positive(does,chew_cud). positive(X,Y):- xpositive(X,Y),!. positive(X,Y):- not(xnegative(X,Y)), ask(X,Y,yes). negative(X,Y):- xnegative(X,Y),!. negative(X,Y):- not(xpositive(X,Y)), ask(X,Y,no). ask(X,Y,yes):- !, write(X," it ",Y,'\n'), readln(Reply),nl, frontchar(Reply,'y',_), remember(X,Y,yes). ask(X,Y,no):- !, write(X," it ",Y,'\n'), readln(Reply),nl, frontchar(Reply,'n',_), remember(X,Y,no). remember(X,Y,yes):- assertz(xpositive(X,Y)). remember(X,Y,no):- assertz(xnegative(X,Y)). clear_facts:- write("\n\nPlease press the space bar to exit\n"), retractall(_,dbasedom),readchar(_). run:- animal_is(X),!, write("\nYour animal may be a (an) ",X), nl,nl,clear_facts. run:- write("\nUnable to determine what"), write("your animal is.\n\n"), clear_facts. run. I have a problem with this program. I compile the program, but I get an error message:
GNU Prolog 1.3.0 By Daniel Diaz Copyright (C) 1999-2007 Daniel Diaz | ?- [system]. compiling /root/Dokumenty/Lab/Expert/system.pl for byte code... /root/Dokumenty/Lab/Expert/system.pl:2:1: syntax error: . or operator expected after > expression 1 error(s) compilation failed I'm trying to solve my problem, but I'm still getting the error message:
xpositive(symbol,symbol). xnegative(symbol,symbol). nondeterm animal_is(symbol) nondeterm it_is(symbol) ask(symbol,symbol,symbol) remember(symbol,symbol,symbol) positive(symbol,symbol) negative(symbol,symbol) clear_facts run Error message:
| ?- [system]. compiling /root/Dokumenty/Lab/Expert/system.pl for byte code... /root/Dokumenty/Lab/Expert/system.pl:4:11: syntax error: . or operator expected after expression 1 error(s) compilation failed Thank you for your help in advance